这个问题在这里已经有答案了:
如何用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);
问题是一样的。为什么对同一个例子显示完全不同的值?
也许有一个更准确和正确的方法来获得执行时间?
2条答案
按热度按时间6vl6ewon1#
当您运行代码时,您并不是唯一占用cpu/处理器+内存+i/o的对象。这三个因素影响java运行时环境以及它执行给定命令的速度。
因此,23-29是跑步所需的时间,这是完全可以接受的。
这都是基于我对你问题的理解。没有办法总是得到23,23,23,23,23,23
ruyhziif2#
我不知道这是否有帮助,但在我的项目中,我使用了以下方法: