使用 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 追踪代码膨胀的工具的主要内容,如果未能解决你的问题,请参考以下文章

Linux工具学习

Linux工具学习

SQL 追踪

Spring Cloud(16)——链路追踪工具Sleuth

SQL追踪

追踪 .NET Windows 服务内存泄漏