2013-04-06 108 views
1
time_start(); 

int op = 0; 
for(int i = 1; i <= n; i++) 
    op += arr[i]*pow(x, i); 

time_stop(); 

这是我想衡量代码的一部分,TIME_START()和time_stop()函数只保存时钟()输出的地方,然后execution_time()返回的区别,给人的执行时间。测量执行时间短

问题是,对于< 50000,输出仅为0ms或1ms。这是正确的输出?这可以更准确吗?

+1

在哪个硬件架构和操作系统上执行测量? 问题是,在大多数硬件和操作系统时钟将有10毫秒的分辨率。您将需要使用“性能计时器”来获取低于此值。这将取决于硬件和操作系统。 – 2013-04-06 14:58:39

+0

看到这个帖子的窗口:http://stackoverflow.com/questions/15720542/measure-execution-time-in-c-on-windows?rq=1 – 2013-04-06 14:59:49

+0

请参阅此线程http://stackoverflow.com/questions/3557221/how-do-i-measure-time-in-c#comment3728541_3557274 – 2013-04-06 15:00:17

回答

1

您需要在运行时间和计时器代码的分辨率之间有足够的“缩放比例”才能获得准确且可测量的结果。最简单的解决方案是在被测试的小部分代码上重复数百次(或数千次)。

尽管可能存在任何方法的缓存效果,所以请确保您测量的是您实际上认为的自己。