より優れた/新しい C または C++ コンパイラは、よりパフォーマンスの高いコンパイル済みコードを生成しますか? それとも、コンパイル中にパフォーマンスが高速/優れているだけでしょうか?

より優れた/新しい C または C++ コンパイラは、よりパフォーマンスの高いコンパイル済みコードを生成しますか? それとも、コンパイル中にパフォーマンスが高速/優れているだけでしょうか?

私自身は C や C++ のプログラマーではありませんが、一部の R パッケージのように、コンパイルする必要があるか、またはコンパイラに依存するソフトウェアをよく使用します。

より新しい/より優れたコンパイラを使用すると、そのソフトウェアのパフォーマンスは実際に向上するのでしょうか? たとえば、現在私は Mac OS X システム バージョンの Clang を使用していますが、代わりに新しいバージョンを使用することを勧められています。これは、コンパイル中に時間とメモリを節約するための提案にすぎないのでしょうか? それとも、実際にコンパイルされたソフトウェアの効率が向上するのでしょうか?

答え1

より新しい/より優れたコンパイラを使用すると、そのソフトウェアのパフォーマンスは実際に向上しますか?

これは、特定のリリースでコンパイラのコード最適化機能に作業が行われているかどうかに完全に依存します。

たとえば、現在私は Clang の Mac OS X システム バージョンを使用していますが、代わりにそれ以降のバージョンを使用することが提案されています。

後のバージョンにのみ存在する機能が必要な場合を除き、動作することがわかっている同じコンパイラ バージョンを使い続ける必要があります。後のバージョンの方がより効果的なことがわかっている場合を除き、アップグレードしないでください。

それはコンパイル中に時間とメモリを節約するための単なる提案ですか?

この提案は正直に言って 100% 意見に基づいたものと思われます。この提案をした人を信頼するなら、それに従うべきです。

コンパイラはソフトウェアであり、新しいバージョンでは新しいバグが導入され、最適化ルーチンのパフォーマンスが最悪になる可能性があることを指摘しておきます。バランスを取る必要がありますが、これを行うための最善の方法は、常に安定したリリース ビルドを使用することです。

関連情報