在对象文件中查找重复的模板实例化

时间:2017-03-08 16:09:36

标签: c++ c++11 templates visual-c++

我希望通过将尽可能多的模板定义为extern并仅将它们实例化一次来优化项目的编译/链接时间。

为了实现这一目标,我想知道一次创建哪些模板实例化。

由于链接器大多丢弃了这样的副本,我认为关于链接上确切发生的事情的信息非常有用。

MSVC链接器是否有任何标志可以显示这些信息?

1 个答案:

答案 0 :(得分:0)

stack overflow question非常相似。在他们的情况下是做模板元编程。

我认为编译器不会提供直接答案。此外,数字计数可能不是最佳指标(毫无疑问它非常有用)。 大型模板类比5个单行模板函数花费的时间要多得多。

在我的工作中,我们一直在研究这个,因为我们的编译时间很长。帮助我们的是实际检查每个文件/库编译和分析它所花费的时间。通常是模板实例化。在Windows中,特别是在调试时,链接对我们来说非常慢。拥有较小的模块对此有所帮助。同时使用Pimpl习语和前向声明有助于减少实现细节更改时需要编译的文件的涟漪。此外,该模块还将导出较少的符号