一尘不染

功能执行时间

linux

我想找出在Linux上用C ++编写的函数的执行时间。我发现了很多与此有关的帖子。我尝试了此链接“
计时器方法”中提到的所有方法来计算时间。以下是我的函数执行时间的结果:

time() :           0 seconds 
clock() :          0.01 seconds
gettimeofday() :   0.002869 seconds
rdtsc() :          0.00262336 seconds
clock_gettime() :  0.00672151 seconds
chrono :           0.002841 seconds

请帮助我哪种方法读数可靠,因为所有结果的读数都不同。我读到您的操作系统正在不同的任务之间切换,因此不能期望读数非常准确。有没有一种方法可以计算CPU在功能上花费的时间。我听说过使用概要分析工具,但是还没有找到仅用于函数的示例。请指导我。


阅读 240

收藏
2020-06-03

共1个答案

一尘不染

读取时间(7)

由于各种原因(并取决于您的实际 硬件 ,即您的主板),时间不如您希望的那样精确。

因此,添加一些重复执行函数多次的循环,或更改其输入以使其运行更长的时间。确保整个程序的执行时间(由time(1) … 给定)至少约为一秒(如果可能,请确保您至少有半秒的 CPU 时间)。

要进行概要分析,请g++ -Wall -pg -O1使用gprof(1)进行编译和链接(有更复杂的概要分析方法,例如oprofile …)。

2020-06-03