如何知道C / C ++代码中每行花费的时间?

时间:2012-02-19 21:49:29

标签: c++ c profiling

我正在尝试找到一个可以找到的分析工具,在C / C ++程序中每行代码花费了多少时间。我主要使用gcc在Linux平台(Ubuntu,Gentoo,SL)上工作。我使用gprof,但有时我需要“每行”信息。

有什么建议吗?谢谢!

3 个答案:

答案 0 :(得分:2)

在Linux上,您可以使用oprofile。这是一个基于样本的分析器,几乎可以在任何平台上运行,并且如果可用,则支持性能监视寄存器。在x86上,它适用于AMD和英特尔。

您可以将它作为独立程序使用,它将为您提供带注释的源代码,但是有一个可用于eclipse的插件(linuxtools)可以很好地集成到IDE中。

答案 1 :(得分:1)

AMD CodeAnalyst是你最好的选择,它是完全免费的,它适用于Windows和Linux,虽然它主要用于AMD CPU,所以非AMD CPU不会获得基于MSR的分析选项。在Windows下,它还具有与Visual Studio 2008和Visual Studio的完美集成。 2010年也是如此。

对于非供应商特定的免费配置文件,您可以尝试very sleepy,这也恰好是开源的。

答案 2 :(得分:1)

Zoom所做的是在挂钟时间内采集堆栈样本。

然后,任何函数或代码行负责的时间百分比是它出现的样本的分数。 例如,如果一行代码占堆栈样本的30%,并且您可以避免执行它,那么总执行时间将减少30%

无论I / O,递归,竞争过程,交换,以及使许多分析器混淆的所有事情都是如此。