使用 GCC/CLANG 追踪代码膨胀的工具
Posted
技术标签:
【中文标题】使用 GCC/CLANG 追踪代码膨胀的工具【英文标题】:Tools for tracking down code bloat with GCC/CLANG 【发布时间】:2013-07-02 06:39:30 【问题描述】:(我正在寻找类似于 this post 但关注 GCC/Linux 的内容)。
我有很多大量模板(如“仅模板”)代码,这些代码使用了很多元编程和特殊情况优化。 生成的二进制文件非常大,编译时间也很长。
现在我想检查哪些函数模板生成的内联汇编代码最多。 我该怎么做?
一些上下文:
我们有一个包含大量算法组件的 C++ 模板库。 原作者关注的是运行时速度,并没有过多考虑编译时速度。 我想提高编译时速度但保持运行时速度不变,从而将一些决定放在运行时而不是编译时。 IMO 的第一步是查看哪些函数模板在实例化副本方面最重。 下一步是将这些信息与它们在分析器中的使用频率结合起来,并且只保留许多特殊情况,并为热内循环选择编译时选项。这是正确的方法吗?有什么专业提示吗?
【问题讨论】:
【参考方案1】:分而治之。
先解决this method的运行时问题
这可能需要多次迭代,而且并不容易。
然后学习阅读 .map 文件。 你会在那里看到哪些类占了很大一部分。 通过反复试验把它们拿出来,直到你找到你真正需要的东西。
【讨论】:
以上是关于使用 GCC/CLANG 追踪代码膨胀的工具的主要内容,如果未能解决你的问题,请参考以下文章