Java性能计时库

Java性能计时库,java,performance,timing,Java,Performance,Timing,我经常将代码成对包装,以便对其进行计时。比如: long start = System.nanoTime(); methodToBeTimed(); long elapsedTime = System.nanoTime() - start; 有没有什么好的定时库可以帮助解决这个问题?此外,还将接受国产代码 铌 分析器在这里不是一个解决方案,因为我想在单元测试中强制执行一些时间限制,所以我想以编程方式对方法进行计时并不是对您的问题的直接回答,但我也经常使用此技巧来计时我的代码,并且只编写

我经常将代码成对包装,以便对其进行计时。比如:

long start = System.nanoTime();    
methodToBeTimed();
long elapsedTime = System.nanoTime() - start;
有没有什么好的定时库可以帮助解决这个问题?此外,还将接受国产代码


分析器在这里不是一个解决方案,因为我想在单元测试中强制执行一些时间限制,所以我想以编程方式对方法进行计时

并不是对您的问题的直接回答,但我也经常使用此技巧来计时我的代码,并且只编写了以下简单的Eclipse->Around With template:

long startTime = System.currentTimeMillis();
${line_selection}${cursor}
long totalTime = System.currentTimeMillis() - startTime;
System.out.println("Total time = " + totalTime);
System.out.println();

试过了吗?

对于这个问题,您需要什么样的帮助?你有基本的准备。您可以获得以纳秒为单位的运行时间,精确到底层操作系统/硬件能够达到的任何分辨率


还有。。。我知道你说过没有资料员。。。但我在这方面有着卓越的经验。它提供了一个API,您可以使用它从外部控制分析。根据您的具体问题,这个问题可能值得一看。

有来自commons lang的,它还允许您拆分计时器。

JUnit 4有一个内置的定时约束功能

@测试(超时=X)


我们应该做到这一点。X是方法允许运行的最大毫秒数。

忽略此答案,因为项目不再处于活动状态


我没有使用过它,但我最近遇到了它。

如果您正在使用Spring,那么您的类路径中已经为这个提议调用了一个很好的类。

是一个很好的库。它还可以提供分钟、最大值和平均值,还可以生成信息图表。

除了阅读该网站上的维基,我还建议阅读:


一个简单的commons lang包装器,它考虑了多线程环境,“中断的跳跃”,通过JMX公开实时结果,并通过网络将许多“域”的整合统计作为可序列化结果提供。用法示例:

private PerfStat methodPerf = new PerfStat("method.under.test");
...
public void myMethod() {
    methodPerf.start();
    ...
    methodPerf.stop();
}

JFree chart

市场上的一些新事物正在出现。它是在openjdk项目的保护下制作的。

我刚刚开始使用(以前),它看起来棒极了!一组简单的秒表和计数器,几乎没有依赖关系。

使用google cache查看使用情况,或者查看指向xjperf的链接:它似乎是iperf的前端,是“测量最大TCP和UDP带宽性能的现代替代品”。它是对的?很高兴看到它,但它只封装了System.nanoTime/System.currentTimeMillis调用。它总是比默认版本更易于使用;)是的,这是一个非常基本的实现,基本上我正在寻找@Test(timeout=X,repeat=N),然后显示average@Mark:从未听说过。非常感谢!您甚至可以使用perf4j和集成servlet绘制图形。非常好。链接已断开:-(不幸的是,我是netbeans用户-:)我不明白您试图解决的“问题”是什么。您在顶部有一行,在底部还有一行,以提供经过的时间。你有一个变量来保存它。您可以将其封装在一个类中,或者使用Stopwatch类,但是您不会以任何方式真正降低代码的复杂性:您仍然需要在顶部和底部各放一行。您是否需要帮助记录和跟踪大量此类计时?我认为
minLapTime
的实现不起作用,因为它是用尽可能低的值初始化的:0。它可能应该初始化为(并重置为)
Long.MAX\u值