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

标签 c++ templates profiling

(我正在寻找类似于 this post 但专注于 GCC/Linux 的东西)。

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

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

一些上下文:

  • 我们有一个包含大量算法组件的 C++ 模板库。 原作者转而关注运行时速度,并没有考虑那么多编译时速度。
  • 我想提高编译时速度但保持运行时速度不变,从而将一些决定交给运行时而不是编译时。
  • IMO 的第一步是查看哪些函数模板在实例化拷贝方面最重。
  • 下一步是将此信息与它们在探查器中的使用程度相结合,并仅保留许多特殊情况以及热内循环的编译时选择。

这是正确的方法吗?有什么专业提示吗?

最佳答案

分而治之。

首先通过 this method 解决运行时问题

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

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

关于c++ - 使用 GCC/CLANG 跟踪代码膨胀的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17418985/

相关文章:

c++ - Eigenface最适合运动物体人脸识别吗

c++ - 为什么项目 "run"在 NetBeans 内部终端中比在 Windows 命令提示符中更快?

c++ - Qt C++ 在函数模板中使用约束

java - 为什么 park/unpark 有 60% 的 CPU 使用率?

haskell - 在启用分析的情况下构建所有库是否有任何真正的缺点?

c++ - 使用节点将实例添加到链表

c++ - boost 图相等性和子图

c++ - 在 C++ 中获取给定指向它的指针的类型名的类型名

c++ - 使用 LLVM-Clang 隐式实例化私有(private) C++ 模板的链接器错误

visual-studio - 用于分析的自定义 prolog/epilog 函数