前回、C# で実行させたが、C++/CLI (マネージドコード)での実行と比較してみた。
ちょっと大きめの画像での実行結果は次の表のとおり。
番号 | 説明 | C# (秒) | C++/(秒) |
1 | Debug | 8.1 | 4.3 |
2 | Release | 4.8(コードの最適化 Off) | 3.7: 最適化無効 (/0d) |
3 | Release | 4.5 (コードの最適化 On) | 2.7 : 最大限の最適化 (/Ox) |
C++/CLI だと、コンパイル時の最適化が選択できる。デフォルトだと、最適化が無効になっているが、これを最大限の最適化にすると、2倍近い速度が出る。
同じMSILのC++/CLIでは最適化オプションが選択できて、おまけにそこそこ高速化できるのは、納得できないなぁ・・・
ところで、C/C++ コード生成で、”ストリーミング SIMD 拡張機能 2 (/arch:SSE2) (/arch:SSE2)”オプションを設定すると、次のエラーになる。
エラー 1 error D8016: コマンド ライン オプション ‘/clr’ と ‘/arch:SSE2’ は同時に指定できません
CLRとSSE拡張命令は同時につかえない。これは、MSILを使っているので当たり前といえば当たり前か。
コメントを残す