インテルコンパイラでもmemcpy()の速度を計測してみた

C++版の以前のmemcpy()テストは,こちら
C#版は,こちら



学校でインテルコンパイラ,なるものを購入してみた

VisualStudioのC++コンパイラだと
CPUのSSE命令(マルチメディア演算命令),バージョン2(SSE2)までしか対応してなくて

インテルコンパイラだと,バージョン4(SSE4)まで対応しているとのこと

研究室のプロジェクトでは
SSEが得意とする,浮動小数演算,ベクトル演算,画像処理演算やらを大量に実装しており…

かなり強力な武器になりそう…

ってことで,例のごとく,とりあえず,memcpy()で,速度の計測を,ば

以前からすると実行するPC環境が変わっているんで,以前のデータは参考情報でお願いしますです

あ,あと,テストに使ったソースも以前のmemcpy()のページと同一です
Visual Studio2005でビルドかけなおすと,sprintf()セキュリティ関係の警告でますが
無視しまくり,ってことで(爆

CPU : Intel Core2 Quad(2.4GHz)
Memory : 2GB
OS : Windows XP Pro
C++ : Visual Studio 2005(VC++ 8.0 or インテルコンパイラー ver10.1日本語版)

画像データ2000回の
memcpy()を実行
VC++
リリースコンパイル
インテルコンパイラ
リリースコンパイル
(最適化オプションの操作はなし)
インテルコンパイラ
リリースコンパイル
(最適化オプションをかなりいじってみた)(注1)
ハイビジョンサイズ
1280 * 960
32ビットピクセル
(4.8MB)
5,829ミリ秒
(1,686,464 B/ms)
3,766ミリ秒
(2,610,302 B/ms)
3,453ミリ秒
(2,846,915 B/ms)


ぬぉ~~

インテルコンパイラをインストールして
ビルドかけなおすだけで30%以上も速くなってる!!

な,なんじゃこりゃ!

もっと,早くに買っておくべきだったなぁ...

あまりの威力に絶句中….

コンパイルオプション,いじくり倒せば
もう少し速くなりそう…



(注1)

変更したオプションは

    インテルプロセッサー拡張コードの使用 : インテル Core 2 Duoプロセッサー(/QaxT)
    インテルプロセッサー拡張コードの要求 : インテル Core 2 Duoプロセッサー(/QxT)
    最適化 : 最大限の最適化(/Ox)