LLVM GCC 4.2 と Apple LLVM コンパイラ 3.1 の主な違いは何ですか?
私はコンパイラにかなり慣れていないので、助けていただければ幸いです。また、2 つのコンパイラがゲームのパフォーマンスにどのように影響するかにも特に興味があります。
LLVM GCC 4.2 と Apple LLVM コンパイラ 3.1 の主な違いは何ですか?
私はコンパイラにかなり慣れていないので、助けていただければ幸いです。また、2 つのコンパイラがゲームのパフォーマンスにどのように影響するかにも特に興味があります。
違いはテクノロジーとスピードの両方の問題です。
Apple が GCC のコンパイラとツールチェーンからの移行を開始したとき、CLANG はまだ若くてバグが多かったため、最終的な置き換えを容易にするために、LLVM は GCC のバックエンドとして構築されました。そのため、コードが入力され、GCC によって何らかの中間形式にコンパイルされましたが、最終的なマシン コードとパッケージングを提供するために LLVM に送信されました。
最終的に、LLVM と特に CLANG は十分に成熟し、GCC を完全に置き換えることができました。これにより、コンパイルの速度が大幅に向上し、マシンコード出力の品質が向上しました (多くの人は、GCC は速度を犠牲にしてより良い品質のコードを生成すると主張しています)。 .
ただし、ゲームのパフォーマンスに関する懸念に対処するには、CLANG は「より良い」コンパイル エクスペリエンスを提供する可能性がありますが、パフォーマンスはコンパイラの仕事ではありません。最適化と単純化はコンパイル プロセスの一部ですが、人々がまだ遅延のあるゲームを作成したり、スタックを浪費する無限ループを生成したりするという事実は、パフォーマンスがあなたの仕事であることを示しています。コンパイラができることは限られています。残りはあなた次第です。コンパイラの種類やベンダーも、ゲームの成否を左右したり、フレーム レートや使いやすさに影響したりすることはありません。ARM アーキテクチャの低レベルの最適化について読む必要があります。NEONやインスツルメントに関するいくつかの記事は、「コンパイラーの最適化」について学ぶよりもはるかに役に立ちます。
別の違い: Clang はC++11のほとんどをサポートしています。GCC 4.2-Apple は C++11 をサポートしません。