使用valgrind知道每个函数花费的时间(以秒为单位)

时间:2011-07-12 11:40:57

标签: c profiling valgrind

有没有valgrind的扩展,可以在命令窗口中使用,这可以帮助我知道我的C代码中每个函数花费的时间(以秒为单位)?

thanks =)

3 个答案:

答案 0 :(得分:28)

对于机器指令分析,使用valgrind的callgrind(同样,cachegrind可以进行缓存和分支预测分析,这非常好。)

对于使用google's cpu profiler的时间测量,它提供的结果比gprof更好。您可以设置采样频率,它可以将输出显示为一个很好的带注释的调用图。

答案 1 :(得分:17)

Valgrind不适合测量时间,因为在valgrind中运行应用程序会扭曲结果(减速,CPU与I / O)。因此,valgrind分析工具callgrind不会测量时间,而是CPU指令。 Callgrind仅在您的瓶颈受CPU限制(因此CPU指令很重要)时才有用,然后测量的CPU指令将与花费的时间成比例。如果涉及繁重的I / O或多个进程,则无用。然后你应该使用一个采样分析器,如gprof或sysprof。它检查过程所处的功能的间隔,结果失真较少。

答案 2 :(得分:3)

使用this链接。我认为Callgrind之类的东西可以解决这个问题。