我经常使用System.nanoTime()来包装代码以计时。类似于:
long start = System.nanoTime();
methodToBeTimed();
long elapsedTime = System.nanoTime() - start;
有没有好的时间库能够帮助解决这个问题?同时,自己编写的代码也是可以接受的。
NB
使用分析工具并不是一种解决方案,因为我想在单元测试中强制执行一些时间限制,所以我需要通过编程方式计时方法。
我经常使用System.nanoTime()来包装代码以计时。类似于:
long start = System.nanoTime();
methodToBeTimed();
long elapsedTime = System.nanoTime() - start;
有没有好的时间库能够帮助解决这个问题?同时,自己编写的代码也是可以接受的。
NB
使用分析工具并不是一种解决方案,因为我想在单元测试中强制执行一些时间限制,所以我需要通过编程方式计时方法。
由于该项目不再活跃,因此请忽略此回答
我最近遇到了perf4j,但我并没有使用它。
虽然不是对你问题的直接回答,但我也经常使用以下技巧来计时我的代码,并编写了以下简单的Eclipse -> Surround With模板:
long startTime = System.currentTimeMillis();
${line_selection}${cursor}
long totalTime = System.currentTimeMillis() - startTime;
System.out.println("Total time = " + totalTime);
System.out.println();
JUnit 4内置了时间限制功能。
@Test(timeout=X)
可以解决问题。X是方法允许运行的最大毫秒数。
有一个来自commons-lang的StopWatch,它还允许你分割计时器。
JETM 是一个很好的库,用于做这件事情。它还可以提供最小值、最大值和平均值,并能够生成信息丰富的图表。