首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >如何计算程序运行时间

如何计算程序运行时间

作者头像
默 语
发布2024-11-20 09:36:43
发布2024-11-20 09:36:43
6170
举报
文章被收录于专栏:JAVAJAVA
计算程序运行时间 demo
  • 摘要
    • currentTimeMillis与StopWatch 的时间差工具:
    • calendar.getTimeInMillis()

博主 默语带您 Go to New World.个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之一~ 🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄之助。苟未尽善尽美,敬请批评指正,以资改进。!💻⌨

摘要

在Java中,您可以使用System.currentTimeMillis()System.nanoTime()方法来计算程序运行时间。这些方法可以在程序的不同部分插入时间戳,并计算时间差来得到程序运行的时间。

以下是使用这些方法计算程序运行时间的示例:

使用System.currentTimeMillis():

代码语言:javascript
复制
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():

代码语言:javascript
复制
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()计算的时间间隔可以更精确,但在一些情况下可能会受到操作系统的时钟调整影响。
  • 在测量小时间间隔时,要注意计算误差和系统的其他负载。

currentTimeMillis与StopWatch 的时间差工具:

计算时间差(天,小时,分钟)博客 Java 实例 时间的处理demo博客

StopWatch

主要方法: 方法start():开始计时 stop():停止计时 suspend():暂停秒表 resume():恢复秒表 reset():重置秒表 split():设定split点 getSplitTime():获取时间,时间为从计时起点到最新设置的split点之间的时长 getTime():显示当前秒表时间,可以通过指定TimeUnit来指定返回的时间单位

代码语言:javascript
复制
import cn.hutool.core.date.StopWatch;

maven

代码语言:javascript
复制
 <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.3.2</version>
        </dependency>
代码语言:javascript
复制
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+"秒");
    }


}

执行结果是:

代码语言:javascript
复制
Main 运行时间 :10秒
任务1耗时:999ms.
任务2耗时:1099ms.
任务数量:2,总耗时:2.098904701s.

Process finished with exit code 0

还有一个是引用的包不同调用的方法;

代码语言:javascript
复制
import org.apache.commons.lang.time.StopWatch;
代码语言:javascript
复制
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();
        }
    }



}

执行结果是

代码语言:javascript
复制
1==>时间为1001毫秒
2==>时间为1502毫秒
3==>时间为2502毫秒
4==>时间为3503毫秒
5==>时间为3503毫秒
6==>时间为3503毫秒

calendar.getTimeInMillis()

查看执行的的时间

代码语言:javascript
复制
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
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 计算程序运行时间 demo
  • 摘要
    • currentTimeMillis与StopWatch 的时间差工具:
    • calendar.getTimeInMillis()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档