mksieve32.cをgcc(-O9 -mtune=native)とclang(-O2)で行って、どれぐらいかかるか実験してみました。こちとらAtom330(2GB mem)のLinux環境でぃ。
densuke@yuzu% time ./mksieve32-gcc; time ./mksieve32-clang saving sieve32.bm ./mksieve32-gcc 257.72s user 67.40s system 94% cpu 5:43.13 total saving sieve32.bm ./mksieve32-clang 243.04s user 10.13s system 97% cpu 4:20.47 total
最初がシステムの所要時間が多い。もしかしたら先に実行したことでI/Oコスト(キャッシュにのらないとか)が発生したのかもしれない。ということで順番を逆にして再試行すると…
densuke@yuzu% time ./mksieve32-clang; time ./mksieve32-gcc saving sieve32.bm ./mksieve32-clang 248.73s user 8.86s system 97% cpu 4:23.93 total saving sieve32.bm ./mksieve32-gcc 259.02s user 52.80s system 97% cpu 5:19.15 total
という具合でした。Atomなんてこんなもんです。
どっちにしてもすごいのが、clangの最適化能力、というのか、llvmの能力でしょうか。gcc向きに書いてるソースコードを完全に同様に処理できれば(結構依存してるのがあるみたいで、今のところemacs23やLinuxカーネルなど、でかいところがだめっぽいです)それだけで全体のパフォーマンスが改善するんだろうな、と思う次第です。
と思いつつよくよく見ると、アプリケーションとしての実行時間は10秒程度しか差が出ていない(この最適化自体は評価するべき)ところよりも、順番を逆にしてもgcc版のシステム側の処理時間がclang版に比べて異様に高いことが気になってしまいます。
いったいなにに時間を使っているんでしょうか… → 続く
| GCCシリコンリッド&ソールマグ(BOX) WH GCC1011 | |
![]() |
エムズスタイル
売り上げランキング : 36310
おすすめ平均
熱くても飲みやすい
Amazonで詳しく見る by G-Tools
|




[...] This post was mentioned on Twitter by ぐは, ぐは. ぐは said: ブログ追加: 弾先生の実験をAtomで行うと – C で素数を数え直したら、範囲10億で10秒切ったお mksieve32.cをgcc(-O9 -mtune=n http://ow.ly/18kbeD [...]