リンク時間が問題になるような、多くのオブジェクト ファイルを含む大規模なシステムがあるとします。また、システム内の多くのクラスと関数が翻訳単位の外では使用されていないことがわかっているとします。
- 外部リンケージを持つシンボルの数を減らすと、リンク時間が短縮されると仮定するのは合理的ですか?
- その場合、単一の TU でのみ使用されるエンティティ (クラスや関数など) を名前のない名前空間に配置すると、何か効果がありますか? 技術的には、外部リンケージを持つエンティティは名前のない名前空間で外部リンケージを保持しますが、C++11 標準の注意事項として、
名前のない名前空間内のエンティティは外部リンケージを持っている可能性がありますが、それらは翻訳単位に固有の名前によって効果的に修飾されているため、他の翻訳単位からは決して見ることができません。
リンカ アルゴリズムは、名前のない名前空間で外部リンケージを持つエンティティは名前空間の外では見えないという知識に基づいて最適化を実行しますか?