インテルコンパイラはgccの5倍速い!(場合もある)
コンテンツ
/opt/intel/Compiler/11.1/064/Samples/ja_JP/C++/optimize/int_sin.c
にある | sin(x) | を数値積分するコード.
このコードで比較する.
gccとiccを比較するために
//#include <mathimf.h> #include <math.h>
としておく.
コンパイル
% icc -O2 int_sin.c -o i.out % gcc -O2 -lm int_sin.c -o g.out
実行
% time ./g.out > /dev/null ./g.out > /dev/null 6.23s user 0.00s system 98% cpu 6.354 total % time ./i.out > /dev/null ./i.out > /dev/null 1.28s user 0.00s system 99% cpu 1.287 total
インテルコンパイラー速すぎる!約5倍だ!
非常にシンプルなコードなのに,この差とは.
なにかの間違いか?
icc -O2 -lm int_sin.c -o i.out とすると,
icc: warning #10314: オブジェクト・ファイルの前に -lm を指定すると、インテルの算術ライブラリーが使用されず、パフォーマンス に影響することがあります。
なんて,警告がでるが,結果は同じだった.
ただコードによっては,gccとiccで差がでない場合もある.
何が原因なのだろうか?
作成者 Toru Mano
最終更新時刻 2023-01-01 (c70d5a1)