10

LLVM GCC 4.2 と Apple LLVM コンパイラ 3.1 の主な違いは何ですか?

私はコンパイラにかなり慣れていないので、助けていただければ幸いです。また、2 つのコンパイラがゲームのパフォーマンスにどのように影響するかにも特に興味があります。

4

2 に答える 2

9

違いはテクノロジーとスピードの両方の問題です。

Apple が GCC のコンパイラとツールチェーンからの移行を開始したとき、CLANG はまだ若くてバグが多かったため、最終的な置き換えを容易にするために、LLVM は GCC のバックエンドとして構築されました。そのため、コードが入力され、GCC によって何らかの中間形式にコンパイルされましたが、最終的なマシン コードとパッケージングを提供するために LLVM に送信されました。

最終的に、LLVM と特に CLANG は十分に成熟し、GCC を完全に置き換えることができました。これにより、コンパイルの速度が大幅に向上し、マシンコード出力の品質が向上しました (多くの人は、GCC は速度を犠牲にしてより良い品質のコードを生成すると主張しています)。 .

ただし、ゲームのパフォーマンスに関する懸念に対処するには、CLANG は「より良い」コンパイル エクスペリエンスを提供する可能性がありますが、パフォーマンスはコンパイラの仕事ではありません。最適化と単純化はコンパイル プロセスの一部ですが、人々がまだ遅延のあるゲームを作成したり、スタックを浪費する無限ループを生成したりするという事実は、パフォーマンスがあなたの仕事であることを示しています。コンパイラができることは限られています。残りはあなた次第です。コンパイラの種類やベンダーも、ゲームの成否を左右したり、フレーム レートや使いやすさに影響したりすることはありません。ARM アーキテクチャの低レベルの最適化について読む必要があります。NEONインスツルメントに関するいくつかの記事は、「コンパイラーの最適化」について学ぶよりもはるかに役に立ちます。

于 2012-08-18T18:19:29.130 に答える
2

別の違い: Clang はC++11のほとんどをサポートしています。GCC 4.2-Apple は C++11 をサポートしません。

于 2012-08-18T19:52:46.873 に答える