C++/CLI マネージドのコンパイル時の最適化の効果


image_thumb_thumb

前回、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では最適化オプションが選択できて、おまけにそこそこ高速化できるのは、納得できないなぁ・・・

image

ところで、C/C++ コード生成で、”ストリーミング SIMD 拡張機能 2 (/arch:SSE2) (/arch:SSE2)”オプションを設定すると、次のエラーになる。

エラー    1    error D8016: コマンド ライン オプション ‘/clr’ と ‘/arch:SSE2’ は同時に指定できません  

CLRとSSE拡張命令は同時につかえない。これは、MSILを使っているので当たり前といえば当たり前か。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中


%d人のブロガーが「いいね」をつけました。