早期只是使用Demo案例,并不具有丰富的样例Demo,本次替换为丰富的时间单位案例。
Hutool常规方法
final TimeInterval timer = DateUtil.timer();
long oneTime = timer.interval(); // 毫秒数,不会重置计时
long getTimeAndReCountTime = timer.intervalRestart(); // 返回毫秒数,并重置开始时间
long mintues = timer.intervalMinute(); // 分钟数,不会重置计时
案例代码
Hutool 计时工具使用案例
final TimeInterval timer = DateUtil.timer();
// todo XXXXXXXXXX
long endTime = timer.intervalRestart(); // 获取执行的毫秒,并重置计时
System.out.println("XXX耗时(单位毫秒):" + endTime);
System.out.println("XXX耗时(单位秒):" + BigDecimal.valueOf(endTime / 1000.00D).setScale(2, BigDecimal.ROUND_HALF_UP));
System.out.println("XXX耗时(单位分钟):" + BigDecimal.valueOf(endTime / 60 / 1000.00D).setScale(2, BigDecimal.ROUND_HALF_UP));
GPT4给优化了一下(如果只是临时使用,推荐上文的暴力一点。)
import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.date.DateUtil;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class TimePrinter {
private static final int SCALE = 2; // 小数点后保留位数
private static final BigDecimal THOUSAND = BigDecimal.valueOf(1000);
private static final BigDecimal SIXTY = BigDecimal.valueOf(60);
public static void main(String[] args) {
TimeInterval timer = DateUtil.timer();
// todo XXXXXXXXXX
long elapsedMilliseconds = timer.intervalRestart(); // 获取执行的毫秒,并重置计时
printElapsedTime(elapsedMilliseconds);
}
private static void printElapsedTime(long elapsedMilliseconds) {
System.out.println("XXX耗时(单位毫秒):" + elapsedMilliseconds);
System.out.println("XXX耗时(单位秒):" + formatTime(BigDecimal.valueOf(elapsedMilliseconds), THOUSAND));
System.out.println("XXX耗时(单位分钟):" + formatTime(BigDecimal.valueOf(elapsedMilliseconds), THOUSAND.multiply(SIXTY)));
}
private static String formatTime(BigDecimal elapsedMilliseconds, BigDecimal unit) {
return elapsedMilliseconds.divide(unit, SCALE, RoundingMode.HALF_UP).toString();
}
}
非Hutool的常规代码
@Test
public void HelloSystemTimes() {
String test = "";
// 创建计时器
long startTime = System.currentTimeMillis();
for (int i = 0; i < 1000; i++) {
test = test + i;
}
long endTimeOne = System.currentTimeMillis();
System.out.println("A耗时" + (endTimeOne - startTime)); // A耗时:3
for (int i = 0; i < 10000; i++) {
test = test + i;
}
long endTimeTwo = System.currentTimeMillis();
System.out.println("B耗时:" + (endTimeTwo - endTimeOne)); // B耗时:489
}
高级玩法 - 分组
public static void main(String[] args) {
final TimeInterval timer = new TimeInterval();
// 分组A
timer.start("A");
ThreadUtil.sleep(1000);
// 分组B
timer.start("B");
ThreadUtil.sleep(1000);
Console.log("Timer 1 took {} ms", timer.intervalMs("A"));
Console.log("Timer 2 took {} ms", timer.intervalMs("B"));
}
输出
Timer 1 took 2015 ms
Timer 2 took 1033 ms
ps:这个时间多出来的15毫秒,可能是线程获取的CPU时间片导致的。分组方法不会额外耗时!
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤