Optimization 分析/代码优化工具

Optimization 分析/代码优化工具,optimization,profiler,Optimization,Profiler,请让我知道哪种工具GNU或第三方工具是我们可以用来分析和优化代码的最佳工具。gprof是一个有效的工具吗?我们有在Linux中移植的dtrace工具吗?它们有很多工具,您可以从中优化代码 对于web应用程序,它们有不同的工具来优化代码,即jzip压缩器 e、 g等 对于桌面应用程序是好的 gprof总比没有好。但不多。它不仅估计在函数中花费的时间,而且还估计在函数调用的所有函数中花费的时间——但请注意,这是一种估计,而不是直接的度量。它没有区分同一子例程的某些两个调用方在每次调用中花费的时间可能

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

它们有很多工具,您可以从中优化代码

对于web应用程序,它们有不同的工具来优化代码,即jzip压缩器 e、 g等


对于桌面应用程序是好的

gprof总比没有好。但不多。它不仅估计在函数中花费的时间,而且还估计在函数调用的所有函数中花费的时间——但请注意,这是一种估计,而不是直接的度量。它没有区分同一子例程的某些两个调用方在每次调用中花费的时间可能有很大差异。要想做得更好,您需要一个真正的调用图分析器,它可以在计时器上查看堆栈的几个级别

dtrace对它所做的事情有好处

如果你在x86上做低性能优化,你应该考虑英特尔的VTUNE工具。它不仅提供了我所知的对芯片上低级性能测量硬件的最佳访问,即我设计的所谓的EMON事件监视系统,而且Vtune还有一些相当不错的高级工具。比如调用图分析,我相信它比gprof好。在底层,我喜欢做一些事情,比如生成主要嫌疑犯的概要文件,比如分支预测失误和缓存未命中,以及查看代码,看看是否有什么可以做的。有时,一些简单的事情,例如使数组大小为255而不是256,会有很大帮助


通用Linux oprofile几乎和Vtune一样好,而且在某些方面更好。并且可用于x86和ARM。我没有太多地使用它,但我特别喜欢您可以以几乎完全非侵入式的方式使用它,而无需创建gprof所需的特殊-pg二进制文件。

您并不是唯一一个将术语分析和优化混为一谈的人,但它们确实非常不同。就像称量一本书和阅读它一样不同

就gprof而言

在探查器中,最有用的是

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

样本在墙上的时钟时间,而不仅仅是CPU时间。如果您在I/O或其他阻塞调用中浪费时间,那么仅CPU的探查器将根本看不到它

通过代码行而不仅仅是函数告诉您包含该行的堆栈样本的百分比。这一点很重要,因为任何这样的代码行,你可以消除将节省你百分之百的总时间,你不必眼睁睁地看着函数猜测它在哪里

一个很好的linux探查器可以做到这一点。我肯定还有其他人。 不要对重要的事情感到困惑。探查器的效率和/或计时准确性对于帮助您定位速度错误并不重要。重要的是它能让你注意到正确的事情

就我个人而言,我使用这种方法,因为我发现它是最有效的。 它不仅简单且不需要投资,而且还发现了不局限于特定例程或代码行的加速机会。
这反映在中。

通常分析工具是特定于语言的。你的目标语言是什么?什么样的应用程序web,桌面?我们的是在Red Hat Linux操作系统上使用C++评测代码开发的web应用程序?什么代码?什么语言?什么为什么?怎样谁在哪里?谢谢-请告诉我是否也有适用于Linux的dtrace工具。请让我知道从哪里可以下载它?由于我们的整个开发都在红帽Linux /C++上,请提供相同平台的工具。