我很好奇我们如何通过查看某些java代码来了解CPU需要多少个周期时钟。
ex:
public class Factorial
{
public static void main(String[] args)
{ final int NUM_FACTS = 100;
for(int i = 0; i < NUM_FACTS; i++)
System.out.println( i + "! is " + factorial(i));
}
public static int factorial(int n)
{ int result = 1;
for(int i = 2; i <= n; i++)
result *= i;
return result;
}
}
答案 0 :(得分:3)
我很好奇我们如何通过查看某些java代码来了解CPU需要多少个周期时钟。
如果你在谈论真正的硬件时钟周期,答案是“你不能知道” 1 。
它是如此困难的原因是程序在执行之前和执行期间经历了许多复杂的(并且很大程度上不透明)转换:
但幸运的是,有一些实用的方法可以检查不依赖于测量硬件时钟周期的软件性能。你可以:
最后两个通常是最实用的。
1 - ...除了在准确的硬件级仿真器上运行应用程序/ JVM以获得精确的硬件配置并让仿真器计算时钟周期。说实话,我不知道运行到那个级别的模拟器是否确实存在。如果他们这样做,他们很可能是英特尔,AMD等专有的。
答案 1 :(得分:0)
我不认为你能够知道时钟周期。
但是你可以测量运行代码所花费的CPU时间。
您需要使用java.lang.management
API。
看看这里:
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/management/ThreadMXBean.html