我使用了两个分析工具(Windows 上的 VTune 和 Solaris 上的 dbx(在 sunstudio 内)),它们可以在不重新构建程序的情况下分析程序,并且在分析期间,程序只是以与正常速度相同的速度运行。这两个功能都为我节省了很多时间。
现在我想知道Linux平台上是否有一些免费工具可以做同样的事情。我想我需要基于采样的分析工具。VTune 很好但很贵……我听说过 gprof 和 valgrind。但似乎 gprof 需要检测程序(所以我们必须重建程序),而 valgrind 会大大减慢程序的执行速度。(从 valgrind 的介绍来看,Cachegrind 运行的程序比正常慢约 20--100 倍,而我需要分析的 Callgrind 是基于 Cachegrind 的)
对于分析,我只需要弄清楚函数调用的执行时间,这样我就可以找出性能下降发生在哪里。实际上,我不需要 Cachegrind 提供的许多低级分析信息......