我希望通过将尽可能多的模板定义为extern
并仅将它们实例化一次来优化项目的编译/链接时间。
为了实现这一目标,我想知道一次创建哪些模板实例化。
由于链接器大多丢弃了这样的副本,我认为关于链接上确切发生的事情的信息非常有用。
MSVC
链接器是否有任何标志可以显示这些信息?
答案 0 :(得分:0)
这stack overflow question非常相似。在他们的情况下是做模板元编程。
我认为编译器不会提供直接答案。此外,数字计数可能不是最佳指标(毫无疑问它非常有用)。 大型模板类比5个单行模板函数花费的时间要多得多。
在我的工作中,我们一直在研究这个,因为我们的编译时间很长。帮助我们的是实际检查每个文件/库编译和分析它所花费的时间。通常是模板实例化。在Windows中,特别是在调试时,链接对我们来说非常慢。拥有较小的模块对此有所帮助。同时使用Pimpl习语和前向声明有助于减少实现细节更改时需要编译的文件的涟漪。此外,该模块还将导出较少的符号