【发布时间】:2014-01-31 01:31:44
【问题描述】:
我想找出我的程序中某个特定函数所花费的时间。为此,我正在使用 gprof。我使用以下命令来获取特定函数的时间,但日志文件仍然显示程序中存在的所有函数的结果。请在这方面帮助我。
gprof -F FunctionName Executable gmon.out>log
【问题讨论】:
-
我只会使用
gprof(不带-F参数)并查看log的内部。正如你所问(正如我所解释的)elsewhere 可能没有足够准确的答案来回答“获得特定功能的时间” -
你为什么不直接循环它 10^6 次,然后计算需要多少秒。如果循环需要 N 秒,这意味着该函数需要 N 微秒。如果要计算纳秒,请循环 10^9 次。这种方法根本不会减慢速度,而且应该非常准确。 (我不明白你为什么要打扰
gprof。) -
@MikeDunlavey 我还利用了 C++ 中存在的时间函数 (stackoverflow.com/questions/21060574/function-execution-time),但是每次我使用链接中提到的任何时间函数运行程序时,它都会给出不同的结果。
-
@Zara:但是你运行了很多次吗?如果这样做,差异将平均为更可靠的数字。不要期望每次运行都具有与其他每次运行相同的运行时间。变量太多了。
-
@Zara:首先,在将每个程序和tune the daylights out of it 进行比较之前,将其与另一个程序进行比较。除非您这样做,否则 2 倍的速度差异可能完全没有意义,因为任何给定的程序,在您编写它时,通常都有大量的水要挤出。