天翼云代理,天翼云代理商,北京代理商
天翼云折扣专线:400-150-1900(全国市话)

6种快速统计代码执行时间的方法,真香!(史上最全)上

2022-01-18 04:53:09
简介: 6种快速统计代码执行时间的方法,真香!(史上最全)

我们在日常开发中经常需要测试一些代码的执行时间,但又不想使用向 JMH(Java Microbenchmark Harness,Java 微基准测试套件)这么重的测试框架,所以本文就汇总了一些 Java 中比较常用的执行时间统计方法,总共包含以下 6 种,如下图所示:


image.png

方法一:System.currentTimeMillis


此方法为 Java 内置的方法,使用 System#currentTimeMillis 来统计执行的时间(统计单位:毫秒),示例代码如下:


public class TimeIntervalTest {  public static void main(String[] args) throws InterruptedException {  // 开始时间  long stime = System.currentTimeMillis();  // 执行时间(1s)  Thread.sleep(1000);  // 结束时间  long etime = System.currentTimeMillis();  // 计算执行时间  System.out.printf("执行时长:%d 毫秒.", (etime - stime));  } }


以上程序的执行结果为:


执行时长:1000 毫秒.


方法二:System.nanoTime


此方法为 Java 内置的方法,使用 System#nanoTime 来统计执行时间(统计单位:纳秒),它的执行方法和 System#currentTimeMillis 类似,示例代码如下:


public class TimeIntervalTest {  public static void main(String[] args) throws InterruptedException {  // 开始时间  long stime = System.nanoTime();  // 执行时间(1s)  Thread.sleep(1000);  // 结束时间  long etime = System.nanoTime();  // 计算执行时间  System.out.printf("执行时长:%d 纳秒.", (etime - stime));  } }


以上程序的执行结果为:


执行时长:1000769200 纳秒.

小贴士:1 毫秒 = 100 万纳秒。


方法三:new Date


此方法也是 Java 的内置方法,在开始执行前 new Date() 创建一个当前时间对象,在执行结束之后 new Date() 一个当前执行时间,然后再统计两个 Date 的时间间隔,示例代码如下:


import java.util.Date;  public class TimeIntervalTest {  public static void main(String[] args) throws InterruptedException {  // 开始时间  Date sdate = new Date();  // 执行时间(1s)  Thread.sleep(1000);  // 结束时间  Date edate = new Date();  //  统计执行时间(毫秒)  System.out.printf("执行时长:%d 毫秒." , (edate.getTime() - sdate.getTime()));  } }


以上程序的执行结果为:


执行时长:1000 毫秒.


方法四:Spring StopWatch


如果我们使用的是 Spring 或 Spring Boot 项目,可以在项目中直接使用 StopWatch 对象来统计代码执行时间,示例代码如下:


StopWatch stopWatch = new StopWatch(); // 开始时间 stopWatch.start(); // 执行时间(1s) Thread.sleep(1000); // 结束时间 stopWatch.stop(); // 统计执行时间(秒) System.out.printf("执行时长:%d 秒.%n", stopWatch.getTotalTimeSeconds()); // %n 为换行 // 统计执行时间(毫秒) System.out.printf("执行时长:%d 毫秒.%n", stopWatch.getTotalTimeMillis()); // 统计执行时间(纳秒) System.out.printf("执行时长:%d 纳秒.%n", stopWatch.getTotalTimeNanos());


以上程序的执行结果为:


执行时长:0.9996313 秒. 执行时长:999 毫秒. 执行时长:999631300 纳秒.

小贴士:Thread#sleep 方法的执行时间稍有偏差,在 1s 左右都是正常的。

12年经验 · 提供上云保障

服务热线:132-6161-6125(手机) 400-150-1900(全国市话)

站内导航: 天翼云服务器价格| 天翼云购买流程| 天翼云代理| 北京天翼云代理商| 杭州天翼云代理| 深圳天翼云代理商| 钉钉代理商| 阿里云代理| 公司官网

我公司收款账号| 天翼云备案系统

CopyRight © 2019 天翼云代理商. All Rights Reserved 京ICP备11011846号-15 管理-北京志远天辰科技有限公司