多次同一程序的执行时间给出不同的结果吗?

时间:2013-08-08 10:18:17

标签: java clock

我使用System.nanoTime()函数测量程序的执行时间。对于每次执行,它都会给出不同的执行时间。此外,我通过将其与处理器速度相乘来测量时钟周期的数量。并且由于不同的执行时间,来自时钟周期的数量也不同。我不知道它是否正确或我在某处做错了。 Plz建议答案。

2 个答案:

答案 0 :(得分:0)

你在做什么是错的。您的质疑线表明您无法理解处理器和时钟周期的工作原理,即使在初级阶段也是如此。

无法通过计算执行java程序所需的时间来测量处理器速度。

答案 1 :(得分:0)

您的假设有几处错误:

首先System.nanoTime()返回的值的分辨率为纳秒,但不一定是精度。该值有可能每毫秒更新一次(这取决于实现)。

接下来是你正在考虑挂钟时间。经过的时间在很大程度上取决于您的系统负载。您永远不知道哪些进程也需要处理时间。因此,您无法直接从待机时间到任何执行速度进行计算。

第三,您假设一定数量的Java命令总是等于相同数量的处理器指令。这是错的。例如。 Hotspot可以重新排序命令,甚至可以在此期间编译代码并多次优化编译代码。