サイズの最適化により、ランタイムメモリ使用量とバイナリサイズが減少しますか?

サイズの最適化により、ランタイムメモリ使用量とバイナリサイズが減少しますか?

サイズを最適化するかどうかgcc -Os ただプログラムのバイナリサイズを小さくしますか、それともランタイムメモリの使用量を減らしますか?私は何を知っている正確に結果は特定のコードによって異なりますが、通常はメモリ使用量が少ないのですか?

答え1

当然、プログラムをメモリにロードする必要があるため、-Osメモリ使用量が減ります。しかし、これがメモリ使用量に与える唯一の影響です。

答え2

1つは、-Osがより小さなアプリを提供しようとすることです。時々実行されるコードが少ないため、実行速度が速くなります。

答え3

実際、次のような一部のソースによるとGentoo Wiki-Os兆候できるバイナリスペースを減らすよりも多くの利点があります。しかし、一括で使用すると問題が発生する可能性があります。大きなプログラムでは実用的な利点がありますが、このフラグはいくつかのバグを引き起こす可能性があるため、不安定なコードでは使用しないように注意する必要があります。したがって、残念ながら、これは非常に大きなソフトウェアがバグを公開する可能性が高いことを意味します(純粋な確率:より多くのコード=>バグの公開リスクが高い)。多くの大規模アプリケーションこのフラグをフィルタリングしてみてくださいこれらのエラーがビルド時に公開されないようにしてください。

-Osまた、次の点に注意してください。できるアプリケーションをすばやく作成します。これはルールではありません。確かにコンパイラは努力するプログラムを小さくしてください。

答え4

Kimが述べたように、結果のバイナリが小さいので、スタックメモリの使用量が小さくなります。

より多くのプログラムがCPUキャッシュに適しているため、他の最適化フラグよりも高速になる可能性があります。これが最近より人気を集めている理由の一つです。

関連情報