ここには、C++ と FORTRAN が混在する非常に大きなプログラムがあります (申し訳ありません)。私のチェックインの 1 つは、私の変更の影響を受けないコードの領域でさえ、アプリケーション全体の劇的な速度低下 (つまり、2 倍以上) をもたらしました。
事実:
私のコードをまったく使用していないモジュールも含め、ほぼすべてのモジュールが同程度に遅くなりました。
実行可能ファイルは約 6% 大きくなります。
メタデータはチェックイン間で変更されていません。
IDE/コンパイラは、リリース モードの VS2010 です。
一部の .lib ファイルのサイズは 2 倍または 3 倍になりました。
サイズが 3 倍になった .lib ファイルの 1 つを確認しましたが、変更点は 2 つだけです。
a) 大きなヘッダー ファイルをインクルードしました。このファイルには、他の多くのファイルが含まれています。その中には、適度に複雑なインライン コードが含まれているものもあります。「追加のインクルード ディレクトリ」は、各ヘッダー ファイルが 1 つまたは複数の他のファイルを #include するため、0 または 1 から約 7 になりました。
b) このヘッダー ファイルから 4 つの関数を呼び出しましたが、速度が低下した実行中には呼び出されませんでした (つまり、それらの実行によってコードの速度が低下することはありませんが、それらを含めると速度が低下する可能性があります)。
ヘッダー ファイルを含めると (コンパイルではなく)実行が遅くなるかどうかについてフォーラムを検索しても、関連する記事が 1 つも見つかりません。私の質問は次のとおりです。
? 任意の形式のヘッダー (宣言またはインライン) を#include すると、コードの実行が遅くなりますか?
? 実行速度に関してインラインコードを含めることには、質的または量的な違いがありますか(「インライン」はコンパイラへのアドバイスにすぎないことを知っています)?
? .lib のサイズ、.exe のサイズ、および実行速度の相関関係は何ですか?
? (これらのインクルードを .cpp ファイルに入れ、「追加のインクルード ディレクトリ」を減らすことによって) 他のものをインクルードする必要がないように、一部のヘッダー ファイルをリファクタリングすると、状況が改善されると思いますか?
最後の質問は、かなりの労力がかかるため、問題の核心だと思います...