如何衡量Java代码所用的时间?

Man*_*odi 18 java time-complexity

我需要分析Java中某些算法的复杂性.为此,我计划提供大量输入并测量Java实现所花费的时间.检查某些代码行之间的时间最准确,最准确的方法是什么?我需要精确到毫秒......

cre*_*hen 16

即使使用,您也可以获得纳秒分辨率System.nanoTime().

但是,您可能需要考虑以下几点:

如何在Java中编写正确的微基准测试?


Hus*_*sha 6

使用Speed4j等库.这不仅可以对呼叫进行基准测试,还可以在日志中提供统计信息,您也可以通过JMX远程查看它们.最好使用这样的库,而不是在整个代码中放置System.current ..调用.

  • 添加新内容的+1 =) (5认同)

Lit*_*ild 5

假设您有一种特殊的方法可以放在显微镜下.你可以这样做:

long time1 = System.nanoTime();
thatMethod();
long time2 = System.nanoTime();
long timeTaken = time2 - time1;  
System.out.println("Time taken " + timeTaken + " ns");  
Run Code Online (Sandbox Code Playgroud)

计算机非常快,因此在使用getTimeMillis()零时可能会出现时差.因此,使用nanoTime()

你也可以使用Caliper.他们有一个视频开始.另外,请仔细阅读指出的答案creichen.它有很多很棒的东西.