49837


有名なコンパイラとして、gccとclangが存在しますが、webの記事を参照するとclangでビルドされたバイナリの方が性能が良いというような内容が多く見られます。  
これは、現代的にはc言語のソースをビルドし、品質(省メモリ、実行速度)の良いバイナリを生成するのが目的ならば、すでにllvm環境のほうが有利でしかない状況になっているのが現状であるという認識で正しいでしょうか？


CC BY-SA 4.0
2018-11-01T00:26:19.690
49834
2018-11-01T07:39:29.767
30707
question
c
c言語コンパイラについてgccとclang


x86 や x86-64 に限定してならば Yes と言っていいんぢゃないかな。でもだからといって全てのプログラマが gcc を捨てて clang
に移行できるかというとそんなこともなくて。

世の中にはそれ以外の CPU がいっぱいあって gcc はそれらの多くに（普通のプログラマでは名前を聞いたことないようなマイナーな CPU
にも）対応しているのに対して clang がサポートしている CPU は少ないとかの差はあるっすね。

x86/64 だと intel c++ compiler ってのもあるけどウチでは使っていないし、今 2018
年の時点でのコード効率比較記事ってのはちょっと探しただけでは見つからなかった。

（で、どうしても [c](/questions/tagged/c "'c'
のタグが付いた質問を表示")/[c++](/questions/tagged/c%2b%2b "'c++' のタグが付いた質問を表示")
でなきゃならないんだったら別だけど、できるだけ [c](/questions/tagged/c "'c'
のタグが付いた質問を表示")/[c++](/questions/tagged/c%2b%2b "'c++' のタグが付いた質問を表示")
を避けるってのが現代の世の趨勢）


CC BY-SA 4.0
2018-11-01T01:40:09.910
49837
2018-11-01T01:40:09.910
8589
49834
answer


>
> 現代的にはc言語のソースをビルドし、品質(省メモリ、実行速度)の良いバイナリを生成するのが目的ならば、すでにllvm環境のほうが有利でしかない状況になっているのが現状であるという認識で正しいでしょうか？

絶対的な答えのない質問の一種ですが、おそらく正確な認識ではありません。GCC、LLVM/Clang両コンパイラともに恒常的なバージョンアップが行われており、「どちらが高性能か」という短絡的な結論付けは乱暴と思います。

事実として言えるのは、後発プロダクトであるLLVM/ClangがGCCと並ぶまでに進化し、競争原理による性能改善や利便性能向上をもたらし、一般開発者にとってはメリットがあるという点です。

* * *

コンパイラの「性能」を、一つの側面のみから評価することは大変危険です。対象のハードウェア構成・OS・処理内容・データ／ワークロードでいくらでも結果が変わってしまいます。

例えば下記サイトでは、コンパイラやCPUの定期的なベンチマーク性能比較を行っていますので、ご参考にしてください。

  * [GCC 8 vs. LLVM Clang 6 Performance At End Of Year 2017](https://www.phoronix.com/scan.php?page=article&item=gcc-clang-eoy2017)


CC BY-SA 4.0
2018-11-01T06:22:36.933
49845
2018-11-01T07:39:29.767
2018-11-01T07:39:29.767
49
49
49834
answer