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

回到顶部