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

C++ 未命名名称空间和Visual C++;链接器性能,c++,visual-c++,linker,C++,Visual C++,Linker,将代码放入未命名的名称空间是否会以任何方式提高链接器性能 理论上,链接器在链接由不同编译单元生成的对象文件时需要处理的数据较少。然而,将我的代码放入未命名的名称空间是否真的能提高VC++链接器的性能?我问了同样的问题,并从Microsoft代表那里得到了以下答案: 这样最多可以节省一些符号查找时间。我想是的 有理由期望符号查找使用哈希表或其他 足够有效的数据结构和符号的数量不需要 显著影响链接时间 此外,快速查看包含未命名名称空间的.obj文件 显示这样一个名称空间的成员仍然具有外部链接 (据我

将代码放入未命名的名称空间是否会以任何方式提高链接器性能

理论上,链接器在链接由不同编译单元生成的对象文件时需要处理的数据较少。然而,将我的代码放入未命名的名称空间是否真的能提高VC++链接器的性能?

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

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

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


因此,即使它可以节省构建“包含参与跨obj文件链接的符号的哈希表”的时间,也没关系,因为这些符号仍然被标记为参与外部链接。

如果有任何性能差异,我认为最好使用自解释名称空间,这样代码就会清晰,未命名的名称空间有一个含义——它们只在这个编译单元中使用。当我使用它们时,这就是我的意图。指示导出的符号数对链接器性能有很大影响。(但当然,如果无论如何都要导出符号,显然这两种方式都无关紧要)