名称空间别名会影响大型代码库中的构建时间吗?(c++)
Do namespace aliases affect build times in large codebases? (C++)
我在头文件中声明了一些(不是很多)名称空间别名。有些头文件在大型代码库中具有相当高的可见性。我几年前就停止使用它们了,但有些仍然存在。我也移除了其中一些,但我没有计算前后的时间。在我移除它们之前,我想知道是否有人测试并计时,测试的结果是什么。我不介意它们的存在,除非它们明显地影响了构建时间。
名称空间别名的存在不太可能显著影响构建时间,但是包含多余的头文件肯定会影响构建时间。
c++编译阶段为获取分散在磁盘上的多个包含文件的内容而生成的所有IO都受到很大的影响,消除这些文件的很大一部分应该可以改善构建时间。
如果你有大量的预处理/元编程代码,在这种情况下,你可能会达到CPU/内存带宽限制,补充文件不会有太大的影响。
作为一个提醒,减少编译时间的最好方法是消除依赖,这样增量构建就会更小。
免责声明:我只能从我使用clang编译器的有限经验来看。
在clang中,命名空间别名定义不会导致源命名空间中的所有符号被复制到当前声明上下文(即作用域)。相反,编译器会在上下文中发出一个命名空间别名声明记录。
换句话说,符号表的大小只增加1,因此,不命名别名的查找只受到轻微影响。当然,如果使用别名,将执行两个查找——一个查找别名声明,另一个查找目标名称空间。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 构建时间::time_point
- 使用LTO静态链接的可执行文件(链接时间优化):如何使用以前构建的库进行制作
- 如何使用MINGW-W64通过链接时间优化构建QT
- 为ReadThedocs项目优化构建时间
- 为AVR构建编译时间任意长度阵列
- 在Windows上使用GCC的链接时间优化构建wxWidgets DLL时出错
- GCC 构建时间不会从预编译标头中受益太多
- Netbeans C++ 在本地主机上构建需要很长时间
- localtime_s和strftime用法构建ISO时间字符串
- 有没有办法控制英特尔线程构建模块中的线程数量、亲和力和创建时间
- Qt静态构建在虚拟机(win7 32位)上需要很长时间
- 我可以使用LLVM来加速构建并减少GCC编译时间吗?
- 在RedHat 7.2中获取构建日期和时间
- 名称空间别名会影响大型代码库中的构建时间吗?(c++)
- 在MFC/ c++中花费太多时间来构建
- 在c++中逐步构建编译时间列表
- 如何构建源代码以检入需要很长时间构建的二进制文件
- 外部链接是否增加了链接/构建时间
- C/C++:如何获取构建时间的整数unix时间戳(而不是字符串)