0

最近いくつかのカスタム スタティック ライブラリにリンクするように変更された Fortran および C++ コードを含む exe があります。テスト実行で新しいコードを呼び出していない場合でも、exe はすべての関数で以前よりも大幅に遅くなります (~ 2 倍)。プロファイラーでコール グラフと関数のヒット カウントがチェックされ、新しいコードが呼び出されていないというアサーションが検証されます。

リンク時に、新しいコードが原因で多数の「複数定義」警告が表示されるようになりました。ただし、最適化は引き続き有効であり、他のコンパイラまたは環境設定は変更されていません。exe は以前よりも大幅に大きくならず、メモリ フットプリントは両方の実行で同じです。

これを引き起こす可能性のあるアイデアはありますか?

4

1 に答える 1

0

この問題は、呼び出しチェーンのさらに下にある特定のモジュールで、最適化が誤ってオフにされたインクルードのらせん状のチェーンによって引き起こされました。これらのモジュールが最適化されていなくても、コードのパフォーマンスが重要なセクションであるヘッダーがリンクされるまでは、何の影響もありませんでした。これらのヘッダーを含めるために使用された最適化されたモジュールは、ビルド順序の変更により、もはや含まれていません。

于 2012-10-20T11:26:31.450 に答える