分析/代码优化工具

时间:2011-11-17 06:33:40

标签: optimization profiler

请告诉我哪种工具(GNU或第三方工具)是我们可以用来分析和优化代码的最佳工具。 gprof是一种有效的工具吗?我们是否在Linux中移植了dtrace工具?

3 个答案:

答案 0 :(得分:3)

你并不是唯一一个将“剖析”和“优化”这两个术语混为一谈的人,但他们真的非常不同。与称重书和阅读书不同。

就gprof而言,here are some issues

在分析器中,最有用的是那些

  • 对整个调用堆栈(不仅仅是程序计数器)进行采样,或至少对包含代码的调用堆栈进行采样。

  • 壁挂时间(不仅仅是CPU时间)的样本。如果您在I / O或其他阻塞调用中浪费时间,则只有CPU的分析器才会看不到它。

  • 通过代码行(而不仅仅是函数)告诉您包含该行的堆栈样本的百分比。这很重要,因为你可以消除的任何这样的代码行都可以节省你整个时间的百分比,并且你不需要通过眼球函数来猜测它的位置。

执行此操作的Linux的良好分析器是Zoom。我确定还有其他人。 (不要对重要事项感到困惑。分析器的效率和/或计时准确性对于帮助您找到速度错误并不重要。重要的是它会引起您对正确事物的注意。)

就个人而言,我使用random-pausing方法,因为我觉得它最有效。 它不仅简单且不需要投资,而且可以找到未针对特定例程或代码行as in this example本地化的加速机会。 这反映在speedup factors that can be achieved

答案 1 :(得分:2)

gprof总比没有好。但并不多。它估计不仅在函数中花费的时间,而且还在函数调用的所有函数中 - 但要注意它是一个估计,而不是直接测量。它并没有区分出相同子程序的两个调用者在每个调用中可能在其内部花费的时间差异很大。为了做得更好,你需要一个真正的调用图分析器,一个在定时器滴答中查看堆栈的几个级别的分析器。

dtrace对它的作用很有帮助。

如果您在x86上进行低级性能优化,则应考虑采用英特尔的Vtune工具。它不仅提供了我所知道的芯片上低级性能测量硬件的最佳访问,即所谓的EMON(事件监控)系统(我设计的一些),但Vtune也有一些非常好的高级工具。比如调用图分析,我相信,它比gprof更好。在低层次上,我喜欢做一些事情,例如生成主要嫌疑人的配置文件,例如分支错误预测和缓存未命中,以及查看代码以查看是否可以执行某些操作。有时简单的东西,例如制作数组大小为255而不是256,有很多帮助。

Generic Linux oprofile http://oprofile.sourceforge.net/about/几乎与Vtune一样好,在某些方面更好。适用于x86和ARM。我没有太多使用它,但我特别喜欢你可以以几乎完全非侵入的方式使用它,而不需要创建gprof需要的特殊-pg二进制文件。

答案 2 :(得分:0)

他们有许多工具可供您优化代码,

对于Web应用程序,它们是优化代码的不同工具,即jzip压缩器 例如YUI Compressor等。

对于桌面应用程序optimizing compiler是好的。