如何在java中计算执行时间



我需要知道算法的实现执行了多长时间。我的工作:

long m1 = System.currentTimeMillis();
bm.search(mediumtext, mediumpattern);
System.out.println(System.currentTimeMillis() - m1);

但是,对于同一个示例,每次新运行都会显示不同的值。到目前为止,我的得分在23到29之间。

我也试过

long mediumtime = System.nanoTime();
bm.search(mediumtext, mediumpattern);
mediumtime = System.nanoTime() - mediumtime;
System.out.printf("Elapsed %,9.3f msn", mediumtime/1_000_000.0);

问题是一样的。为什么对于同一个例子,它显示出完全不同的值?

也许还有一种更准确、更正确的方法来获取执行时间?

当您运行代码时,您并不是唯一占用CPU/处理器+内存+I/O的东西。这3个会影响Java运行时环境,以及它执行给定命令的速度。

因此,23-29岁是跑步所需的时间,这是完全可以接受的。

这都是基于我对你问题的理解。没有办法总是得到23,23,23、23、23,23

我不知道这是否有帮助,但在我的项目中,我使用了这个:

long start = System.currentTimeMillis();
bm.search(mediumtext, mediumpattern);
long elapsedTimeMillis = System.currentTimeMillis() - start;
float min = elapsedTimeMillis / (60 * 1000F);
min = (float) Math.floor(min * 100) / 100;
System.out.println("Task performed in " + min + " minutes");

最新更新