2012-02-19 41 views
3

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

有什么建议吗?谢谢!

+1

在GCC中,您可以用'-pg'编译并使用'gprof'。这并不完全是“按线”,而是与此相当接近。 – 2012-02-19 21:50:55

+5

哪个是您的平台? – rotoglup 2012-02-19 21:50:58

+0

@Kerrak:我忘了提及,我使用gprof,但有时它必须是“每行”。 – steffen 2012-02-19 21:52:09

回答

2

在linux上,你可以使用oprofile。这是一个基于样例的分析器,它几乎可以在任何平台上运行,并在性能监视寄存器可用时支持它们。在x86上,它可以与AMD和英特尔合作。

你可以使用它作为独立的程序,它会给你一个注释的源代码,但是有一个可用的插件(linuxtools)用于Eclipse,它很好地集成到IDE中。

1

AMD CodeAnalyst是你最好的选择,它是完全免费的,它可以在windows和linux上运行,虽然它主要用于AMD CPU,所以非AMD CPU不会得到基于MSR的性能分析选项。在Windows下,它也很好地集成了2010年的Visual Studio 2008 &。

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

1

Zoom做什么是在壁钟时间采取堆栈样本。

然后,任何函数或代码行负责的时间百分比就是它出现的样本的分数。 例如,如果一行代码占堆栈样本的30%,并且您可以避免执行它,则总执行时间将减少30%。无论I/O,递归,竞争进程如何,这都是正确的,交换所有混淆了许多配置文件的东西。

+0

+1有趣。必须尝试一个。 – hirschhornsalz 2012-02-20 01:02:54

+0

@drhirsch:正如你从我们之前的谈话中所知道的那样,有些事情Zoom也不容易找到,但是作为个人档案,它正在做所有正确的事情,恕我直言。 – 2012-02-20 01:20:42

相关问题