Java中如何快速统计代码的运行时间呢?
下文笔者讲述java中统计代码运行时长的方法及示例分享,如下所示
可直接使用StopWatch对象来统计代码运行时间
获取Java代码运行时长的实现思路
方式1: 使用System.currentTimeMillis 方式2: 使用System.nanoTime 方式3: new Date 方式4: 使用Spring的 StopWatch方法 方式5: 使用 commons.lang3.StopWatch 方式6: 使用Guava StopWatch方法
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)); } }
System.nanoTime
此方式是统计程序运行的纳秒数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)); } }
new 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())); } }
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());
commons-lang3 StopWatch
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.10</version> </dependency> import org.apache.commons.lang3.time.StopWatch; import java.util.concurrent.TimeUnit; public class TimeIntervalTest { public static void main(String[] args) throws InterruptedException { StopWatch stopWatch = new StopWatch(); // 开始时间 stopWatch.start(); // 执行时间(1s) Thread.sleep(1000); // 结束时间 stopWatch.stop(); // 统计执行时间(秒) System.out.println("执行时长:" + stopWatch.getTime(TimeUnit.SECONDS) + " 秒."); // 统计执行时间(毫秒) System.out.println("执行时长:" + stopWatch.getTime(TimeUnit.MILLISECONDS) + " 毫秒."); // 统计执行时间(纳秒) System.out.println("执行时长:" + stopWatch.getTime(TimeUnit.NANOSECONDS) + " 纳秒."); } }
Guava Stopwatch
<!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>29.0-jre</version> </dependency> import com.google.common.base.Stopwatch; import java.util.concurrent.TimeUnit; public class TimeIntervalTest { public static void main(String[] args) throws InterruptedException { // 创建并启动计时器 Stopwatch stopwatch = Stopwatch.createStarted(); // 执行时间(1s) Thread.sleep(1000); // 停止计时器 stopwatch.stop(); // 执行时间(单位:秒) System.out.printf("执行时长:%d 秒. %n", stopwatch.elapsed().getSeconds()); // %n 为换行 // 执行时间(单位:毫秒) System.out.printf("执行时长:%d 豪秒.", stopwatch.elapsed(TimeUnit.MILLISECONDS)); } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。