2015-05-31 47 views
2

试图以此来找到我的代码的执行时间:执行时间在C++中

#include <iostream> 
#include <time.h> 
using namespace std; 

int main() 
{ 
    clock_t t1, t2; 

    t1 = clock(); 

    // code goes here 

    t2 = clock(); 

    float diff = ((float)t2 - (float)t1); 

    cout <<"Execution Time = "<<diff/CLOCKS_PER_SEC <<endl; 
    system ("pause"); 

    return 0;  
} 

,但每次与相同的代码执行时会返回一个不同的时间。代码是否正确?

我想检查我的代码在不同情况下的执行时间,但不应该显示相同的时间,当我执行相同的代码两次?

+2

时间不确定,对于这样短的操作,它可能相差很大。 –

+6

它永远不会显示完全相同的时间。顺便说一句,尝试使用新的''函数来定时你的程序,看到一个例子[这里](http://en.cppreference.com/w/cpp/chrono/steady_clock/now)。 – vsoftco

+0

处理器还有哪些? –

回答

0

正如here所提到的,时钟滴答是一个常数但系统特定长度的时间单位,与那些由函数时钟返回的时间单位相同。在提到我们需要考虑使用这种方法找出执行一段代码的时间时,场景/事实的几个 。

1)打勾表示的时间取决于操作系统。此外,操作系统内部的 时钟滴答计数器。请参阅此SuperUser Question

2)需要为系统上运行的任何进程分配资源。但是如果处理器忙于另一个更重要的过程,或者甚至可能已经耗尽资源,该怎么办?在这种情况下,您的进程将被放入一个队列中,并以较低的优先级运行。但是,由于时钟芯片被存储在内部计数器中(如上所述),即使其他一些进程正在使用处理器,它也会继续增加。

结论

你发现基于时钟执行时间的方法,每一跳都不会 产量确切的结果,但它会给你的执行时间只在一念。