ベクトルの長さと性能(コンパイラ別)
ベクトルの長さと性能(コンパイラ別)
gcc -O2でコンパイルしたときのベクトルの長さと性能

icc -O2でコンパイルしたときのベクトルの長さと性能

いずれのグラフも200k付近までは順調に上がっている。
ただしiccはgccに比べ全体的に高く、また伸び率も高い。
また、いずれのグラフも200k付近で急にグラフが下がり始め500k付近で横ばいになり、
2M付近でまたグラフが急に下がり始める。
iccは4M付近でグラフが横ばいになることが見て取れる。
これはキャッシュの溢れと推測される。
200kは一次キャッシュとしては容量が多すぎて不自然であるため、
調べてみたところitanium2は三次キャッシュまで存在することが分かった。
よって200k付近での減少は2次キャッシュ溢れ、
2M付近での減少は3次キャッシュ溢れであろう。
全体を比較すると、iccはgccに比べ性能が高く、またグラフの変化も激しい。
これはiccはより最適化がなされており、キャッシュをうまく利用していると思われる。
icc -O2でコンパイルしたときのベクトルの長さと実行時間