Java中的CPU执行时间
我想计算我的函数在Java中执行需要多少CPU时间。目前我正在做如下。
long startTime = System.currentTimeMillis(); myfunction();
long endTime = System.currentTimeMillis();
long searchTime = endTime - startTime;
但是我发现,对于相同的I / PI,根据系统负载,获得不同的时间。
因此,如何获得我的函数执行所需的确切CPU时间。
回答:
随着JVM预热,所需的时间会有所不同。第二次运行将始终比第一次运行快。(第一次必须加载类并调用静态块)运行该方法10,000次后,它将再次更快(将代码编译为本机机器代码的默认阈值)
为了获得可重复使用的微基准测试的平均时间,我建议您忽略前10,000次迭代,并在其后运行2-10秒。
例如
long start = 0;int runs = 10000; // enough to run for 2-10 seconds.
for(int i=-10000;i<runs;i++) {
if(i == 0) start = System.nanoTime();
// do test
}
long time = System.nanoTime() - start;
System.out.printf("Each XXXXX took an average of %,d ns%n", time/runs);
非常重要:每种方法只能执行以下循环之一。这是因为它根据使用方式优化了整个方法。如果您有一个像这样的繁忙循环,则后面的循环将显得较慢,因为它们尚未运行并且优化效果不佳。
以上是 Java中的CPU执行时间 的全部内容, 来源链接: utcz.com/qa/412735.html