java中统计方法耗时的几种常用方法

在我们写代码的时候为了统计方法或者代码块的耗时,往往需要自己写代码来统计。下面是常用的几种。

 

1、使用System的自带时间:

long start = System.currentTimeMillis();
TimeUnit.SECONDS.sleep(3L);
System.out.println("it consumes " +(System.currentTimeMillis() - start) + "ms");
// output :  consumes 3004ms

优点:系统自带,统计时间单位到:毫秒。(还有一个纳秒的版本。System.nanoTime())

缺点:不能重用代码,每次都需要重新写一个 start 的时间起点。 

 

2、使用 org.apache.commons.lang.time.StopWatch

public static void testStopWatch() throws InterruptedException {
     System.out.println("SLAMonitorThread.main() start");
     StopWatch sw = new StopWatch();
     sw.start();
     TimeUnit.SECONDS.sleep(1L);
     sw.split();
     System.out.println(
             "SLAMonitorThread.main() end. split:" + sw.getSplitTime() + ", " + sw.toSplitString());
     TimeUnit.SECONDS.sleep(1L);
     sw.split();
     System.out.println(
             "SLAMonitorThread.main() end. split:" + sw.getSplitTime() + ", " + sw.toSplitString());
     TimeUnit.SECONDS.sleep(1L);
     sw.split();
     System.out.println(
             "SLAMonitorThread.main() end. split:" + sw.getSplitTime() + ", " + sw.toSplitString());
     TimeUnit.SECONDS.sleep(1L);
     System.out.println("SLAMonitorThread.main() end. end:" + sw.getTime() + ", " + sw.toString());

     long start = System.currentTimeMillis();
     TimeUnit.SECONDS.sleep(1L);
     System.out.println("it consumes " + (System.currentTimeMillis() - start) + "ms");
     /*
      * SLAMonitorThread.main() start
      * SLAMonitorThread.main() end. split:1005, 0:00:01.005
      * SLAMonitorThread.main() end. split:2016, 0:00:02.016
      * SLAMonitorThread.main() end. split:3021, 0:00:03.021
      * SLAMonitorThread.main() end. end:4025, 0:00:04.025
      * it consumes 1004ms
      */
}

优点:可以多次使用,使用split即可多次使用。

缺点:需要依赖于额外的commons的jar

 

3、guava 的 StopWatch

和 org.apache.commons.lang.time.StopWatch 的用法类似。

 

4、非常好用的计算耗时的工具类:

org.apache.commons.lang.time.DurationFormatUtils.java

你可能感兴趣的:(java,经验,非技术)