2

大部分がヘッダー ファイルであるファイル構造 (コードの 90% がヘッダーのみ) は、コンパイル以外の速度を低下させますか?

一部の人々は、速度の最適化の場合にほとんどのコードのインライン化が発生する可能性があるため、プロセッサが命令呼び出しなどに関する誤った統計を計算する可能性があると主張しています。それまたは同様のことが起こり、アプリケーションの速度が遅くなることが示されている場所はどこにありますか?

4

3 に答える 3

4
  1. これは、C++ でのインライン関数の利点の複製である可能性がありますか?
  2. 実際のパフォーマンスへの影響は、多くの要因に依存します。実際にパフォーマンスの問題が発生するまでは、私は気にしません。その場合、他のことを最適化することでより大きな利益が得られると確信しています.
  3. すべてのコードをヘッダーに保持しないでください。この傾向を続けると、ほとんどの場合コンパイラーを待つことになるため、後で自分自身を嫌うことになります。同様の最適化を探している場合は、LTO の方が優れたアプローチであり、コンパイル時間への影響も少なくなります。
于 2013-07-15T21:24:47.540 に答える
3

心配なのはリンクです。

ライブラリがヘッダー主体の場合、より大きな中間オブジェクト ファイルを書き込んでから読み取る必要がある場合があります。リンカーには、分析および重複排除するシンボルがさらにあり、一部のシンボルは正当な重複として残ります。これにより、I/O が増加し、バイナリ サイズが肥大化して、リンカーにより多くの作業がスローされます。

ヘッダー優位性の利点の 1 つは、コンパイルするソースが少なくなり、その結果、リンクするイメージ/オブジェクトが少なくなる傾向があることです。そのため、ヘッダーのみもこの点で高速になる可能性があります (正しく使用されている場合)。

ライブラリが多くの翻訳に表示される場合は、サイズとリンクへの影響も重要な考慮事項です。

于 2013-07-15T22:25:36.947 に答える