先日のエントリで書いた Visual Studio 2008 の MP オプションを
かるく(いいかげんに)試してみました。
・Visual Studio 2008
取りあえずコマンドラインから。
使用した環境
・Visual Studio 2008 Professional (VC9.0)
・Vista x64、x64(amd64) 版コンパイラ cl
・Pentium4 3.6GHz ×2CPU × HT = 4thread RAM2G
・41本の cpp ソースコンパイル
コマンドラインオプション
-W3 -WX -O2 -Oi -Ot -Oy -Ob2 -GA -GF -Gy -DWIN32 -D_WINDOWS -D_MBCS -EHsc -fp:except- -fp:fast -Zi -TP -c
-c なので obj 生成のみ。
何度も試したのでファイルはほぼキャッシュされている状態。
結果 (コンパイル時間の比較)
VC9 /MP1 47sec (28%) (/MP無指定と同じ) VC9 /MP2 30sec (55%) VC9 /MP4 21sec (100%)
後ろの括弧の中はパフォーマンスモニタの CPU 使用率(目安) です。
かなり効果ありました。
でももっと驚いたのは
VC8 /MP1 42sec VC8 /MP4 19sec
あれ、VC8 (VS2005) でも /MP が使えている。
テストしててエラーが出ないからおかしいなとは思ったのですが。
マニュアルに無いけど隠し機能でしょうか。知らなかっただけかも。
同条件で Core2 Duo の場合
・Visual Studio 2008 Professional (VC9.0)
・Vista x64、x64(amd64) 版コンパイラ cl
・Core2 Duo E6600 2.4GHz RAM4G
VC9 /MP1 29sec VC9 /MP2 17sec