我想在Java类中捕获从语句A到语句B的时间。在这些语句之间,有许多Web服务调用。我想知道是否有一些类似于java的功能,我可以使用它来捕获确切的时间?
Kaddy
答案 0 :(得分:14)
这将为您提供两个nanoTime()
来电之间的纳秒数。
long start = System.nanoTime();
// Java statements
long diff = System.nanoTime() - start;
对于更复杂的方法,有几个重复的问题可以解决秒表类:
答案 1 :(得分:3)
@Ben S的回答很明显。
但是,应该注意的是,将时间测量语句插入代码的方法无法扩展:
System.nanoTime()
的电话不是免费的!如果您的真正目标是尝试找出应用程序运行缓慢的原因,以便确定要优化的内容,那么更好的解决方案是使用Java分析器。这样做的好处是您需要对源代码进行ZERO更改。 (当然,分析不会给你在特定部分花费的确切时间。相反,它给你时间比例......这对于决定优化的位置更有用。)
答案 2 :(得分:0)
System.currentTimeMillis将以毫秒为单位,nanoTime以毫秒为单位。
如果您正在尝试比较不同技术的性能,请注意JVM环境很复杂,因此只需一次就没有意义。我总是写一个循环,我执行方法1几千次,然后执行一个System.gc,然后执行方法2几千次,然后执行另一个System.gc,然后循环返回并再次执行整个操作至少五次或六次。这有助于平均垃圾收集,即时编译以及JVM中发生的其他神奇事情的时间。