2

GCC にこのオプションがあることに気付いたので、Google に尋ねたところ、コードを最適化しないようにコンパイラに指示する方法を知りたがっている人がたくさんいました。これは逆効果のように思えますが、これはプログラマーにとってどのような目的で役立つのでしょうか? おそらくデバッグ?これを行うことが好ましい状況でどのように役立ちますか?

4

2 に答える 2

2

あなたはそれを言った-デバッグ。オプティマイザーは、関数が存在しなくなり、ステートメントが混在するようにコードを再構築できます。多くの場合、デバッガーがマシン/バイトコードアドレスをソースの場所にマップできるようにするには、最適化をオフにする必要があります。

Tikhonが述べているように、オプティマイザーにバグがある場合にも役立ちます。

于 2013-01-26T06:27:08.590 に答える
1

主な理由はコンパイル時間です。最適化をオンにすると、ビルド時間が大幅に増加する可能性がありますが、必ずしもメリットはありません。

また、特定の最適化は、プログラムの正確さと正確さに影響を与える可能性があります。ただし、これらの最適化は通常、-O2 などのフラグを使用するのではなく、明示的に有効にする必要があります。

インライン化などの一部の最適化では、実行可能ファイルのサイズが大きくなる可能性があります。場合によっては、これは重要な考慮事項です。

最適化は、コードに悪影響を与える可能性もあります。たとえば、速度は向上する可能性がありますが、より多くのメモリを使用するという犠牲が伴います。これは常に望ましいとは限りません。

于 2013-01-26T06:19:31.700 に答える