为什么时间不断变化?

时间:2010-08-16 05:55:37

标签: c

我执行了一个程序,当我计算了经过的时间后,我发现时间不是恒定的。它在某种范围内变化。我想知道为什么会这样?

2 个答案:

答案 0 :(得分:6)

因为有许多进程与您的应用程序同时运行。

即使您设法完全隔离了您的应用程序,也无法保证每次都以相同的速度运行相同的代码。这就是为什么如果你正在测试性能,你应该真正平均多次运行(假设这是你在这里做的)。

如果您正在衡量效率,有更客观/正式的方法来定义它:
请参阅: Big-O notation

答案 1 :(得分:2)

测量经过时间时,您经常会发现这种行为。这是因为经过的时间取决于您的计算机可能正在做的所有其他事情。

参见例如:

pax> time sleep 1
real  0m1.012s
user  0m0.004s
sys   0m0.000s

pax> time sleep 1
real  0m1.002s
user  0m0.004s
sys   0m0.000s

pax> time sleep 1
real  0m1.007s
user  0m0.004s
sys   0m0.000s

在所有这些情况下,经过的real时间会有所不同,但处理器的实际使用情况user+sys非常一致。

对于计时,您应该使用最准确的测量(例如user+sys)来消除外部影响。您还应该使用统计技术来获得更准确的图片。

例如,我倾向于做十二次运行,抛弃异常值(最快和最慢),然后平均剩下的十次。