目录
一、System.currentTimeMillis()
二、StopWatch
1、spring 用法
①、简单用法
②、说明
③、方法
④、详细用法
2、apache 用法
①、简单用法
②、说明
③、方法
④、详细用法
一、System.currentTimeMillis()
long startTime = System.currentTimeMillis();
//业务代码开始
Thread.sleep(100);
//业务代码结束
System.out.println("耗时:" + (System.currentTimeMillis() - startTime) + "ms");
二、StopWatch
1、spring 用法
maven坐标
<dependency>
<groupId>springframework</groupId>
<artifactId>spring-core</artifactId>
<version>1.2.6</version>
</dependency>
简单用法:
StopWatch stopWatch = new StopWatch();
stopWatch.start("任务一");
Thread.sleep(100);
stopWatch.stop();
System.out.println("耗时:" + stopWatch.getTotalTimeMillis() + "ms");
System.out.println("耗时:" + stopWatch.getTotalTimeSeconds() + "s");
说明:
StopWatch stopWatch = new StopWatch();
//计时开始
stopWatch.start("任务一");
//业务代码开始
Thread.sleep(100);
//业务代码结束
//计时结束
stopWatch.stop();
System.out.println("耗时:" + stopWatch.getTotalTimeMillis() + "ms");
System.out.println("耗时:" + stopWatch.getTotalTimeSeconds() + "s");
方法:
- void start(“任务名称”):开始一个任务名称的计时
- void stop():停止当前任务的计时
- boolean isRunning():是否正在计时某任务
- long getTotalTimeMillis():所有任务的总体执行时间(毫秒单位)
- double getTotalTimeSeconds():所有任务的总时间(以秒为单位)
- long getLastTaskTimeMillis():上一个任务的耗时(毫秒单位)
- int getTaskCount():定时任务的数量
- String prettyPrint():优美地打印所有任务的详细耗时情况
- StopWatch.TaskInfo[] getTaskInfo():包含任务名称和任务耗时的实体类数组
详细用法:
package com.cfay.demo.stopWatch;
import org.springframework.util.StopWatch;
/**
* @author lcb
* @since 2022/7/3
*/
public class SpringStopWatchDemo {
public static void main(String[] args) throws Exception {
testStopWatch();
}
private static void testStopWatch() throws Exception {
//创建一个指定了id的StopWatch
StopWatch stopWatch = new StopWatch("任务管理");
//是否正在计时某任务
if (stopWatch.isRunning()) {
System.out.println("正在计时某任务");
} else {
System.out.println("没有计时任务");
}
//开始任务一的计时
stopWatch.start("任务一");
//业务1 代码开始
Thread.sleep(100);
//业务1 代码结束
//停止当前任务的计时
stopWatch.stop();
//业务2 代码开始
stopWatch.start("任务二");
Thread.sleep(200);
//业务2 代码结束
stopWatch.stop();
//包含任务名称和任务耗时的实体类数组
StopWatch.TaskInfo[] taskInfo = stopWatch.getTaskInfo();
for (StopWatch.TaskInfo info : taskInfo) {
System.out.println(info.getTaskName() + ":耗时" + info.getTimeMillis() + "ms");
System.out.println(info.getTaskName() + ":耗时" + info.getTimeSeconds() + "s");
}
System.out.println("总任务数:" + stopWatch.getTaskCount() + "个");
System.out.println("上一个任务耗时:" + stopWatch.getLastTaskTimeMillis() + "ms");
System.out.println("总耗时:" + stopWatch.getTotalTimeMillis() + "ms");
//优美地打印所有任务的详细耗时情况
System.out.println(stopWatch.prettyPrint());
}
}
2、apache 用法
maven坐标
<dependency>
<groupId>springframework</groupId>
<artifactId>spring-core</artifactId>
<version>1.2.6</version>
</dependency>
简单用法:
StopWatch stopWatch = StopWatch.createStarted();
Thread.sleep(100);
stopWatch.stop();
System.out.println("耗时:" + stopWatch.getTime(TimeUnit.MILLISECONDS) + "ms");
说明:
//计时开始
StopWatch stopWatch = StopWatch.createStarted();
//业务代码开始
Thread.sleep(100);
//业务代码结束
//计时结束
stopWatch.stop();
System.out.println("耗时:" + stopWatch.getTime(TimeUnit.MILLISECONDS) + "ms");
方法:
- void start():开始计时
- void stop():停止计时
- void suspend():暂停秒表
- void resume():恢复秒表
- void reset():重置秒表
- void split():设置split点
- void unsplit():取消split点
- long getSplitTime():获取从开始计时点到最新设置的split点之间的时间间隔
- long getTime():获取从开始计时到现在的时间间隔,可以通过TimeUnit来指定返回的时间单位
- boolean isStarted():是否开始计时
- boolean isSuspended() :是否暂停计时
- boolean isStopped():是否结束计时
详细用法:
package com.cfay.demo.stopWatch;
import org.apache.commons.lang3.time.StopWatch;
import java.util.concurrent.TimeUnit;
/**
* @author lcb
* @since 2022/7/3
*/
public class Lang3StopWatchDemo {
public static void main(String[] args) throws Exception {
testStopWatch();
}
private static void testStopWatch() throws Exception {
//method one
//创建秒表
StopWatch stopWatch = new StopWatch();
//计时开始
stopWatch.start();
Thread.sleep(100);
stopWatch.stop();
System.out.println("耗时:" + stopWatch.getTime(TimeUnit.MILLISECONDS) + "ms" + "\n" +
"耗时:" + stopWatch.getTime(TimeUnit.MINUTES) + "min" + "\n" +
"------------------method split line------------------");
//method two
//创建秒表并开始计时
StopWatch stopWatch2 = StopWatch.createStarted();
//业务1 代码开始
Thread.sleep(100);
//业务1 代码结束
long toBusinessOneCost = stopWatch2.getTime();
System.out.println("业务1耗时: " + toBusinessOneCost + "ms");
//业务2 代码开始
Thread.sleep(200);
//业务2 代码结束
long toBusinessTwoCost = stopWatch2.getTime();
System.out.println("业务2耗时: " + (toBusinessTwoCost - toBusinessOneCost) + "ms");
//设置split点
stopWatch2.split();
System.out.println("split点耗时: " + stopWatch2.getSplitTime() + "ms");
//取消split点
stopWatch2.unsplit();
//暂停秒表
stopWatch2.suspend();
//是否暂停计时
if (stopWatch2.isSuspended()){
System.out.println("暂停计时");
}
//业务3 代码开始
Thread.sleep(300);
//业务3 代码结束
//恢复秒表
stopWatch2.resume();
if (stopWatch2.isStarted()) {
stopWatch2.stop();
}
System.out.println("除了业务3,其他业务的总耗时:" + stopWatch2.getTime() + "ms");
//重置秒表
stopWatch2.reset();
if (stopWatch2.isStopped()) {
stopWatch2.start();
}
//业务4 代码开始
Thread.sleep(400);
//业务4 代码结束
System.out.println("业务4耗时:" + stopWatch2.getTime() + "ms");
}
}