2016-03-23 5 views
5

私は一般にgcc最適化フラグ-O0(最適化なし)を使用するアプリケーションを持っています。これで、私は-O1でコンパイルしたいファイルopt.cを残りのファイルに-O0を残しています。同じアプリケーションで異なるgcc最適化レベルのファイルをコンパイルできますか?

つまり、opt.cには大きなforループがあり、これは簡単な算術演算を実行します。

最後に、すべてのファイルとopt.cを含む実行可能ファイルが1つだけ作成されます。これにより問題が発生するかどうかはわかりません!

答えて

6

はい、これは大丈夫です。私はあなたのコードがすべて最適化されていないのはなぜなのでしょうか?通常、最適化が問題となるファイルを除いて、すべてを最適化します。

+0

大規模なアプリケーションであるため、エラーの導入(?)の可能性があり、追加のテストが必要になります。これを避けるため、1つのファイルに適用されます。 – kp11

+4

@ kp11最適化は、コードにバグがあるか、コンパイラやツールチェーンにバグがある可能性が低い場合にのみ問題を引き起こします。すべてのコードを最大限に最適化し、結果の問題を解決することを強くお勧めします。それは、私はこの答えを承認したと言いました。 –

+2

@HadiBrais:場合によっては、Cの方言用に書かれたコードで最適化を行うと、標準によって規定されているものを超える有用な動作や保証を提供することもできます。場合によっては、鈍ったコンパイラの「最適化」を無効にするためのランタイム・コストは、そうでなければそれを守るために必要とされるコードのコストよりも低くなる可能性があります。 – supercat

関連する問題