0

我已经使用 System.nanoTime() 函数测量了我的程序的执行时间。对于每次执行,它都会给出不同的执行时间。我还通过将时钟周期与处理器速度相乘来测量时钟周期的数量。由于执行时间不同,时钟周期数也不同。我不知道这是正确的还是我在某处做错了。请提出答案。

4

2 回答 2

0

你在做什么是错误的。您的提问表明您不了解处理器和时钟周期是如何工作的,即使是在初级水平上也是如此。

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

于 2013-08-08T10:30:42.840 回答
0

您的假设有几个错误:

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

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

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

于 2013-08-08T11:03:21.070 回答