Visual Studio 2005と2008のコンパイル速度比較
年末にVisual Studio 2008(日本語版)が出たので、早速インストールして、ちょこちょこお試し中です。
しかし、起動速いですね。VS2005より速いのではないかい?と思ってしまう程です。
という訳で、試しにコンパイル速度の比較をしてみようと思いました。
時間計測する時、Linuxだとtimeコマンドを使う所なんですが、Windows系だとtimeitコマンドがあるらしいです。(要リソースキット)
- timeitコマンドでアプリケーションの実行時間を測定する − @IT
http://www.atmarkit.co.jp/fwin2k/win2ktips/422timecmd/timecmd.html
これと、最近覚えたmsbuildコマンドを使ってコンパイル速度の比較をしてみました。
msbuildって便利
余談なんですが、msbuildコマンドって便利ですね。(気づくの、遅っ)
チュートリアルを見ると、antみたいなXML構文がずらずら並んでいるんで、「記述するの面倒だなぁ。Visual Studio上で簡単記述できるようになるか、業務で自動ビルドシステムを構築する時に検討しようかな?」とぐらいに思ってたんです。
けど、Debug/Releaseビルドを何度も切り替えるのが段々面倒になってきて、何かダブルクリックポンする方法が無いかな?と思って読み返してみたら、「msbuildは、Visual Studioのソリューションファイルを入力に使えるよ。」って書いてあったんで、試しに使ってみたら意外と簡単。
いや〜、あのタスクとか条件分岐とかの複雑な構文に惑わされていましたよ。
ビルド時間の比較
まずは、最近でたIronPython 2.0A7のビルド時間を比較してみます。
Visual Studio 2005の場合。
F:\Wacky\Test\python\IronPython\IronPython-2.0A7-Src\IronPython-2.0A7\Src>timeit msbuild IronPython.sln /t:rebuild /p:Configuration=Release ... ビルドに成功しました。 0 警告 0 エラー 経過時間 00:00:28.40 Version Number: Windows NT 5.1 (Build 2600) Exit Time: 1:26 pm, Tuesday, January 1 2008 Elapsed Time: 0:00:29.500 Process Time: 0:00:02.234 System Calls: 900942 Context Switches: 204957 Page Faults: 107366 Bytes Read: 38929700 Bytes Written: 27032505 Bytes Other: 2485180
次、Visual Studio 2008の場合。
F:\Wacky\Test\python\IronPython\IronPython-2.0A7-Src\IronPython-2.0A7\Src>timeit msbuild IronPython2008.sln /t:Rebuild /p:Configuration=Release ... ビルドに成功しました。 0 警告 0 エラー 経過時間 00:00:13.39 Version Number: Windows NT 5.1 (Build 2600) Exit Time: 1:30 pm, Tuesday, January 1 2008 Elapsed Time: 0:00:14.109 Process Time: 0:00:01.687 System Calls: 560397 Context Switches: 91521 Page Faults: 71058 Bytes Read: 36930594 Bytes Written: 24823377 Bytes Other: 2011208
表にすると以下の感じですね。
_ | VS2005 | VS2008 |
---|---|---|
経過時間(Elapsed Time) | 0:00:29.500 | 0:00:14.109 |
内部処理時間(Process Time) | 0:00:02.234 | 0:00:01.687 |
後、手持ちのコードもビルドしてみました。
VS2005→VS2008へのプロジェクト変換は、VS2008を開いて、ソリューションファイルをドラッグ&ドロップすると、変換ウィザードが開くので、ぽちぽち進めるだけです。何て事はありません。
VS2005の場合: 経過時間 00:01:26.71 Version Number: Windows NT 5.1 (Build 2600) Exit Time: 1:14 pm, Tuesday, January 1 2008 Elapsed Time: 0:01:27.937 Process Time: 0:00:12.453 System Calls: 3282114 Context Switches: 812886 Page Faults: 559369 Bytes Read: 257160989 Bytes Written: 132760112 Bytes Other: 15370215 VS2008の場合: 経過時間 00:01:01.25 Version Number: Windows NT 5.1 (Build 2600) Exit Time: 1:20 pm, Tuesday, January 1 2008 Elapsed Time: 0:01:02.734 Process Time: 0:00:11.593 System Calls: 2906299 Context Switches: 887275 Page Faults: 517774 Bytes Read: 200332063 Bytes Written: 131496199 Bytes Other: 14822484
表にすると以下の感じです。
_ | VS2005 | VS2008 |
---|---|---|
経過時間(Elapsed Time) | 0:01:27.937 | 0:01:02.734 |
内部処理時間(Process Time) | 0:00:12.453 | 0:00:11.593 |
う〜ん、速くなってますね。