弾先生の実験をAtomで行うと…


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
GCCシリコンリッド&ソールマグ(BOX) WH GCC1011 エムズスタイル 売り上げランキング : 36310 おすすめ平均 star star熱くても飲みやすい Amazonで詳しく見る by G-Tools

One Response

Leave a Reply