(我正在寻找类似于 this post 但专注于 GCC/Linux 的东西)。
我有很多大量使用模板(如“仅模板”)的代码,这些代码使用了大量的元编程和特殊情况优化。 生成的二进制文件非常大,编译时间也很长。
现在我想检查哪些函数模板生成的内联汇编代码最多。 我该怎么做?
一些上下文:
- 我们有一个包含大量算法组件的 C++ 模板库。 原作者转而关注运行时速度,并没有考虑那么多编译时速度。
- 我想提高编译时速度但保持运行时速度不变,从而将一些决定交给运行时而不是编译时。
- IMO 的第一步是查看哪些函数模板在实例化拷贝方面最重。
- 下一步是将此信息与它们在探查器中的使用程度相结合,并仅保留许多特殊情况以及热内循环的编译时选择。
这是正确的方法吗?有什么专业提示吗?
最佳答案
分而治之。
首先通过 this method 解决运行时问题
这可能需要多次迭代,而且并不容易。
然后学习阅读.map文件。 你会在那里看到哪些类占用了大部分的大小。 通过反复试验将它们取出,直到找到您真正需要的东西。
关于c++ - 使用 GCC/CLANG 跟踪代码膨胀的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17418985/