尝试使用以下方法查找代码的执行时间:
#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;
}
但每次使用相同的代码执行时都会返回不同的时间。代码是否正确?
我想在不同的场景中检查我的代码的执行时间,但是当我执行两次相同的代码时,它不应该显示相同的时间吗?
答案 0 :(得分:0)
如上所述here,时钟标记是一个恒定但系统特定长度的时间单位,如功能时钟返回的那些。提到我们需要考虑一对 使用此方法查找一段代码的执行时间时的场景/事实。
1)刻度表示的时间取决于操作系统。此外还有OS内部
时钟滴答的计数器。请参阅此SuperUser Question。
2)需要为在系统上运行的任何进程分配资源。但是,如果处理器忙于另一个更重要的过程,甚至可能耗尽了资源,该怎么办?在这种情况下,您的进程将被放入队列中,并以较低的优先级运行。但是由于时钟信号存储在内部计数器中(如上所述),即使其他一些进程同时使用处理器,它也会继续增加。
<强>结论强>
根据时钟滴答找到执行时间的方法不会 产生精确的结果,但它只会给你一个关于执行时间的想法。