
博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之一~ 🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄之助。苟未尽善尽美,敬请批评指正,以资改进。!💻⌨
在Java中,您可以使用System.currentTimeMillis()或System.nanoTime()方法来计算程序运行时间。这些方法可以在程序的不同部分插入时间戳,并计算时间差来得到程序运行的时间。
以下是使用这些方法计算程序运行时间的示例:
使用System.currentTimeMillis():
public class ProgramTimer {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
// 程序的主要逻辑
for (int i = 0; i < 1000000; i++) {
// ...
}
long endTime = System.currentTimeMillis();
long elapsedTime = endTime - startTime;
System.out.println("程序运行时间:" + elapsedTime + " 毫秒");
}
}使用System.nanoTime():
public class ProgramTimer {
public static void main(String[] args) {
long startTime = System.nanoTime();
// 程序的主要逻辑
for (int i = 0; i < 1000000; i++) {
// ...
}
long endTime = System.nanoTime();
long elapsedTime = endTime - startTime;
double elapsedTimeInSeconds = (double) elapsedTime / 1_000_000_000.0;
System.out.println("程序运行时间:" + elapsedTimeInSeconds + " 秒");
}
}注意事项:
System.currentTimeMillis()返回的是当前时间的毫秒数。System.nanoTime()返回的是一个较为准确的纳秒级时间,但它主要用于测量时间间隔而不是实际的日期和时间。System.nanoTime()计算的时间间隔可以更精确,但在一些情况下可能会受到操作系统的时钟调整影响。计算时间差(天,小时,分钟):博客 Java 实例 时间的处理demo:博客
StopWatch
主要方法: 方法start():开始计时 stop():停止计时 suspend():暂停秒表 resume():恢复秒表 reset():重置秒表 split():设定split点 getSplitTime():获取时间,时间为从计时起点到最新设置的split点之间的时长 getTime():显示当前秒表时间,可以通过指定TimeUnit来指定返回的时间单位
import cn.hutool.core.date.StopWatch;maven
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.2</version>
</dependency>package com.example.democrud.democurd.controller;
//import org.apache.commons.lang.time.StopWatch;
import cn.hutool.core.date.StopWatch;
public class demoTest {
public static void main(String[] args) throws InterruptedException {
currentTimeMillis();
// StopWatch();//多线程适用任务
StopWatch01();//多线程适用任务 多线程执行demo
}
private static void StopWatch01() throws InterruptedException {
// 创建一个 StopWatch 实例
StopWatch sw = new StopWatch("实例");
// 开始计时
sw.start("任务1");
Thread.sleep(1000);
// 停止计时
sw.stop();
System.out.printf("任务1耗时:%d%s.\n", sw.getLastTaskTimeMillis(), "ms");
sw.start("任务2");
Thread.sleep(1100);
sw.stop();
System.out.printf("任务2耗时:%d%s.\n", sw.getLastTaskTimeMillis(), "ms");
System.out.printf("任务数量:%s,总耗时:%ss.\n", sw.getTaskCount(), sw.getTotalTimeSeconds());
}
/* private static void StopWatch() {
try{
StopWatch stop=new StopWatch();
//start
stop.start();//开始计时
Thread.sleep(1000);
stop.split();//设置split点
System.out.println("1==>时间为"+stop.getSplitTime()+"毫秒");//getSplitTime()获取从start 到 最后一次split的时间
Thread.sleep(500);
stop.split();//设置split点
System.out.println("2==>时间为"+stop.getSplitTime()+"毫秒");//getSplitTime()获取从start 到 最后一次split的时间
Thread.sleep(1000);
stop.split();//设置split点
System.out.println("3==>时间为"+stop.getSplitTime()+"毫秒");//getSplitTime()获取从start 到 最后一次split的时间
Thread.sleep(1000);
stop.split();//设置split点
System.out.println("4==>时间为"+stop.getSplitTime()+"毫秒");//getSplitTime()获取从start 到 最后一次split的时间
System.out.println("5==>时间为"+stop.getTime()+"毫秒");//getTime()统计从start到现在的计时
//stop
stop.stop();//停止计时
Thread.sleep(1000);
System.out.println("6==>时间为"+stop.getTime()+"毫秒");//getTime()统计从start到现在的计时
} catch (InterruptedException e) {
e.printStackTrace();
}
}*/
private static void currentTimeMillis() {
long startTime = System.currentTimeMillis();
try {
Thread.sleep(10000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
long endTime = System.currentTimeMillis();
System.out.println("Main 运行时间 :" + (endTime-startTime)/1000+"秒");
}
}执行结果是:
Main 运行时间 :10秒
任务1耗时:999ms.
任务2耗时:1099ms.
任务数量:2,总耗时:2.098904701s.
Process finished with exit code 0还有一个是引用的包不同调用的方法;
import org.apache.commons.lang.time.StopWatch;package com.example.democrud.democurd.controller;
import org.apache.commons.lang.time.StopWatch;
//import cn.hutool.core.date.StopWatch;
public class demoTest {
public static void main(String[] args) throws InterruptedException {
// currentTimeMillis();
StopWatch();//多线程适用任务
// StopWatch01();//多线程适用任务 多线程执行demo
}
private static void StopWatch() {
try{
StopWatch stop=new StopWatch();
//start
stop.start();//开始计时
Thread.sleep(1000);
stop.split();//设置split点
System.out.println("1==>时间为"+stop.getSplitTime()+"毫秒");//getSplitTime()获取从start 到 最后一次split的时间
Thread.sleep(500);
stop.split();//设置split点
System.out.println("2==>时间为"+stop.getSplitTime()+"毫秒");//getSplitTime()获取从start 到 最后一次split的时间
Thread.sleep(1000);
stop.split();//设置split点
System.out.println("3==>时间为"+stop.getSplitTime()+"毫秒");//getSplitTime()获取从start 到 最后一次split的时间
Thread.sleep(1000);
stop.split();//设置split点
System.out.println("4==>时间为"+stop.getSplitTime()+"毫秒");//getSplitTime()获取从start 到 最后一次split的时间
System.out.println("5==>时间为"+stop.getTime()+"毫秒");//getTime()统计从start到现在的计时
//stop
stop.stop();//停止计时
Thread.sleep(1000);
System.out.println("6==>时间为"+stop.getTime()+"毫秒");//getTime()统计从start到现在的计时
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}执行结果是
1==>时间为1001毫秒
2==>时间为1502毫秒
3==>时间为2502毫秒
4==>时间为3503毫秒
5==>时间为3503毫秒
6==>时间为3503毫秒查看执行的的时间
long ss1 =Calendar.getInstance().getTimeInMillis();
Map<String, Object> resultMap = queryIdxInfo(id, sheetId);
long ss2 = Calendar.getInstance().getTimeInMillis();
long costs1 = ss2-ss1;
Date date = new Date(costs1 .getTimeInMillis());
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");
System.out.println(format.format(date));
#时间戳和日期的格式化互转参考:
https://www.cnblogs.com/yanwu0527/p/9039947.html