如何在java中计算执行时间?

dgtucam1  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(321)

这个问题在这里已经有答案了

如何用java编写正确的微基准测试(11个答案)
上个月关门了。
我需要知道我的算法执行了多长时间。我的工作:

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 ms\n", mediumtime/1_000_000.0);

问题是一样的。为什么对同一个例子显示完全不同的值?
也许有一个更准确和正确的方法来获得执行时间?

6vl6ewon

6vl6ewon1#

当您运行代码时,您并不是唯一占用cpu/处理器+内存+i/o的对象。这三个因素影响java运行时环境以及它执行给定命令的速度。
因此,23-29是跑步所需的时间,这是完全可以接受的。
这都是基于我对你问题的理解。没有办法总是得到23,23,23,23,23,23

ruyhziif

ruyhziif2#

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

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");

相关问题