3

(我正在寻找与这篇文章类似的内容,但关注的是 GCC/Linux)。

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

现在我想检查哪些函数模板生成的内联汇编代码最多。我怎样才能做到这一点?

一些上下文:

  • 我们有一个包含大量算法组件的 C++ 模板库。原作者专注于运行时速度,并没有过多考虑编译时速度。
  • 我想提高编译时速度但保持运行时速度不变,从而将一些决定放在运行时而不是编译时。
  • IMO 的第一步是查看哪些函数模板在实例化副本方面最重。
  • 下一步是将这些信息与它们在分析器中的使用程度结合起来,并且只保留许多特殊情况,并为热内循环选择编译时。

这是正确的方法吗?任何专业提示?

4

1 回答 1

1

分而治之。

首先通过这种方法解决运行时问题

这可能需要多次迭代,而且并不容易。

然后学习阅读 .map 文件。你会在那里看到哪些类占了很大一部分。通过反复试验把它们拿出来,直到你找到你真正需要的东西。

于 2013-07-02T14:17:59.127 回答