未命名的命名空间和Visual C++链接器性能

Unnamed namespaces and Visual C++ linker performance

本文关键字:链接 性能 C++ Visual 命名空间 未命名      更新时间:2023-10-16

将代码放在未命名的命名空间中会以任何方式提高链接器性能吗?

从理论上讲,当链接从不同编译单元生成的对象文件时,链接器要处理的数据较少。但是,VC++链接器的性能是否真的受益于将我的代码放在未命名的名称空间中?

我在这里问了同样的问题,并从微软代表那里得到了以下答案:

这最多可以节省一些符号查找时间。我想是的合理地期望符号查找使用哈希表或其他足够有效的数据结构和符号数量显著影响链接时间。

此外,快速查看包含未命名名称空间的.obj文件显示此类命名空间的成员仍然具有外部链接(据我所知,这似乎是一个bug具有内部联系),因此它们仍然对全球范围做出贡献符号表。

因此,即使可以节省构建"具有参与跨对象文件链接的符号的哈希表"的时间,这也无关紧要,因为这些符号仍然被标记为参与外部链接。