10

gccのリリースノートは-Ogで少し曖昧でした:

妥当なレベルのランタイムパフォーマンスを提供しながら、高速コンパイルと優れたデバッグエクスペリエンスのニーズに対応します。開発の全体的な経験は、デフォルトの最適化レベル-O0よりも優れているはずです。

「開発の全体的な経験」にはコンパイル時間が含まれますか?デバッグシンボルが不要で、コンパイル時間を最適化する場合、-O0または-Ogを使用する必要がありますか?

4

3 に答える 3

0

デバッグ シンボルを必要とせず、コンパイル時に最適化している場合、-O0 または -Og を使用する必要がありますか?

デバッグ シンボルの有無が問題にならない場合は、両方のオプションの時間を計って、どちらが速いかを確認します。

于 2013-03-21T20:48:05.313 に答える
0

「開発の全体的な経験」には、コンパイル時間は含まれますか?

そうだと思いますが、この非常に特殊なケースではそうではありません。

デバッグ シンボルを必要とせず、コンパイル時に最適化している場合、-O0 または -Og を使用する必要がありますか?

-O0.

于 2013-03-21T19:51:46.787 に答える
-3

コンパイラで-Ogは、(デバッグ用に) 余分なデータを作成して書き出す必要があるため、時間がかかります。アセンブラにコンパイルして(gcc -S -Ogなどを使用)、比較するだけです。-O0しかし、と実行時間の間にどんな違いがあっても、開始時間とその完全な機構-Ogによっておそらく小さくなります。gcc

コンパイル時間が必要な場合は、おそらくtccC を検討する必要があります。おそらく、C++ ではLLVMの方が高速です。

于 2013-03-25T02:32:50.117 に答える