オプション C/C++ -> General -> Favor Size or Speed に出くわしました。サイズではなく速度オプションを選択したかどうかを知りたかった. サイズ以外に見られる欠点はありますか。デフォルトはどちらでもありません。選択した場合、アプリケーションの速度が大幅に向上しますか?Favor Fast Code /Ot
2 に答える
私はこのコンパイラ設定について詳しい知識はありませんが (私は一般的に高速なコードを好み、それについて考えたことは一度もありません)、これがどのような影響を与えるかはわかります。
一部のプロセッサでは、特定の時間に特定の操作を実行すると、ストールが発生する場合があります。RAX
たとえば、レジスタの一部 ( ) に書き込んだ直後に、完全なレジスタ ( ) にアクセスするようなものAL
です。最新のプロセッサは通常、命令を並べ替えることでこれらのストールを回避できますが、それでも避けられない場合があります。
この設定により、コンパイラは、これらのストールの発生を防止するために、時々 no-op 命令を挿入する可能性があると思われます。一般的に言えば、いくつかの no-ops を実行する方が、ストールするよりも高速です。
明らかに、これらのノーオペレーションはコードを大きくし、より多くの命令キャッシュ フェッチを引き起こす可能性があります (非常にタイトな内部ループのパフォーマンスに深刻な影響を与える可能性がありますが、これらはそもそもストールする可能性が高くなります)。その他の悪影響。
このような疑問を持つ人に私が提供できる最善のアドバイスは、さまざまな設定を試し、プロファイラーでコードを実行して、著しく異なる結果が得られるかどうかを確認することです。