C++ 使用GCC/CLANG跟踪代码膨胀的工具

C++ 使用GCC/CLANG跟踪代码膨胀的工具,c++,templates,profiling,C++,Templates,Profiling,(我正在寻找类似的东西,但关注GCC/Linux) 我有很多重模板(如“仅模板”)的代码,它们利用了大量元编程和特例优化。 生成的二进制文件非常大,编译时间很长 现在我想检查哪些函数模板生成的内联汇编代码最多。 我该怎么做 一些背景: 我们有一个C++模板库,算法组件重。 最初的作者关注的是运行时速度,而不是编译时速度 我希望提高编译时速度,但保持运行时速度不变,从而将一些决策交给运行时而不是编译时 IMO的第一步是查看哪些函数模板在实例化副本方面最重 下一步是将这些信息与它们在探查器中的使用

(我正在寻找类似的东西,但关注GCC/Linux)

我有很多重模板(如“仅模板”)的代码,它们利用了大量元编程和特例优化。 生成的二进制文件非常大,编译时间很长

现在我想检查哪些函数模板生成的内联汇编代码最多。 我该怎么做

一些背景:

  • 我们有一个C++模板库,算法组件重。 最初的作者关注的是运行时速度,而不是编译时速度
  • 我希望提高编译时速度,但保持运行时速度不变,从而将一些决策交给运行时而不是编译时
  • IMO的第一步是查看哪些函数模板在实例化副本方面最重
  • 下一步是将这些信息与它们在探查器中的使用程度结合起来,只保留许多特殊情况,并为热内部循环选择编译时
走这条路对吗?有什么专业技巧吗?

分而治之

首先通过以下方法解决运行时问题:

这可能需要几次迭代,这并不容易

然后学习阅读.map文件。 你会在里面看到哪些课程占了很大的比例。 通过反复尝试,直到你真正需要什么