【发布时间】:2019-07-13 19:53:35
【问题描述】:
我尝试在 ubuntu 上使用 gprof 测试我的 cpp 代码。
但我发现了一些错误。
gprof计算执行时间时,最小时间单位为0.01秒。
例如,如果我的函数在我的程序中的执行时间为 0.001 甚至更快,gprof 将识别为 0 秒。
即使我执行我的函数一千次,它也会这样计算:0/s + 0/s ...。 + 0/s = 0/s
但实际运行时间是 1 秒……
所以,我想知道如何修改最小时间单位或计算确切的执行时间。
请帮帮我:)
而且我不需要其他分析工具的任何推荐
【问题讨论】:
-
我不需要其他分析工具的任何推荐,但我建议你看看valgrind(它不仅仅是一个内存检查器) Cachegrind/Callgrind/KCachegrind
-
gprof 因任何合理的时间分析而被破坏。它不切实际地假设每次调用
foo(int N)都需要相同的时间。因此,如果foo(N)的复杂度是 pow(2, N),并且foo(1)从函数fast被调用 99 次(总共不到一秒)并且foo(30)从函数slow被调用 1 次(需要一分钟),那么 gprof 会错误地说fast需要一分钟,而slow需要 0.6 秒。
标签: c++ profiling profiler execution-time gprof