未命名的命名空间和Visual C++链接器性能
Unnamed namespaces and Visual C++ linker performance
将代码放在未命名的命名空间中会以任何方式提高链接器性能吗?
从理论上讲,当链接从不同编译单元生成的对象文件时,链接器要处理的数据较少。但是,VC++链接器的性能是否真的受益于将我的代码放在未命名的名称空间中?
我在这里问了同样的问题,并从微软代表那里得到了以下答案:
这最多可以节省一些符号查找时间。我想是的合理地期望符号查找使用哈希表或其他足够有效的数据结构和符号数量显著影响链接时间。
此外,快速查看包含未命名名称空间的.obj文件显示此类命名空间的成员仍然具有外部链接(据我所知,这似乎是一个bug具有内部联系),因此它们仍然对全球范围做出贡献符号表。
因此,即使可以节省构建"具有参与跨对象文件链接的符号的哈希表"的时间,这也无关紧要,因为这些符号仍然被标记为参与外部链接。
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- CMake-按正确顺序将项目与C运行时对象文件链接
- 从链接列表c++中删除一个项目
- 有根的二进制搜索树.保留与其父级的链接
- 读取文件的最后一行并输入到链接列表时出错
- 静态数据成员的问题-修复链接错误会导致编译器错误
- node-gyp 在 macOS 上未正确链接库
- 基于boost的程序的静态链接——zlib问题
- 无法链接 CMake 中的本地库
- 内联函数中具有内部链接的全局变量
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 使用gcc从静态链接的文件中查找可选符号
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 性能 - 链接 C 尖锐和C++如何影响性能
- unordered_set与链接列表之间的性能比较
- 当我单独编译并链接时,函数的性能为什么会有所不同
- 链接分配的性能含义是什么
- Visual Studio c++中增量链接的低性能
- 系统( "rm x.*" ) 与取消链接()的性能?
- 未命名的命名空间和Visual C++链接器性能