文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java中怎么计算一段程序的运行时间

2023-07-05 07:31

关注

本篇内容介绍了“Java中怎么计算一段程序的运行时间”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Java计算一段程序的运行时间

介绍了两种方法,一种是毫秒级别的计算,另一种是更精确的纳秒级别的计算。

毫秒级别计算时间

        //初始时间        long startTime = System.currentTimeMillis();                  //结束时间        long endTime = System.currentTimeMillis();        //打印        System.out.println("程序运行时间:" + (endTime - startTime) + "ms");

更精确的纳秒

        long startTime_N=System.nanoTime();                long endTime_N=System.nanoTime(); //获取结束时间        System.out.println("程序运行时间: "+(endTime_N-startTime_N)+"ns");

Java程序运行时间统计

写代码特别是完成一些对时间要求比较高的任务时,我们经常需要统计程序运行时间。整体思路当然很简单,在程序开启和结束后分别记录当前时间,两者相减,就得到了程序运行时间。以下介绍一些常见方法,具体使用情况可以根据项目需要选择。

简单方法

1.1 System.currentTimeMillis()

大家第一印象肯定想到的是System.currentTimeMillis()。没错!这个可以用来做最简单的时间统计。

long start = System.currentTimeMillis();// 业务逻辑代码...long end = System.currentTimeMillis();long timeElapsed = finish - end; // 单位为毫秒

System.currentTimeMillis()记录的是系统当前时间(Wall-clock Time)距离1970-1-1 00:00:00流逝的时间,单位是毫秒。系统当前时间具体什么意思呢,就是你操作系统中的时间。currentTimeMillis()并不是精确到1ms,而是跟操作系统具体实现有关。使用这个方法会存在问题,因为系统时间是可以随时调节的。比如:

所以这种方法如果用在开发阶段粗略估计时间是没有问题的,但是如果用到生产环境,就会存在很大的风险。

1.2 System.nanoTime()

nanoTime()与currentTimeMillis()正好相反,与系统时间完全无关,目的也正是用来统计程序耗时的。nanoTime()记录的是从某个固定的时刻起,到现在经过了多少纳秒。但是这个固定的时刻不是Unix时间戳的1970-1-1 00:00:00,而是启动虚拟机时生成的一个固定时刻,每个虚拟机的生成的这个时间都是不同的。

nanoTime()虽然精确到纳秒,但事实并不是每纳秒都跳动一格,而是可能在3纳秒之后,一下跳动3格。不过可以保证的是至少能跟currentTimeMillis()一样精确。

使用nanoTime()的统计方法跟currentTimeMillis()一样,如下:

long start = System.nonoTime();// 业务逻辑代码...long end = System.nonoTime();long timeElapsed = finish - end; // 单位为纳秒

Java8以上

Java8以上定义了新的万年历,基于Java epoch,把一天精准地分为86400秒。使用新的Instant方法如下:

Instant start = Instant.now();// 业务逻辑代码...Instant end = Instant.now();long timeElapsed = Duration.between(start, finish).toMillis(); // 单位为毫秒

第三方库StopWatch

StopWatch是Apache Commons Lang库内的一部分。可以用来方便地进行计时。

首先添加maven库:

<dependency>    <groupId>org.apache.commons</groupId>    <artifactId>commons-lang3</artifactId>    <version>3.7</version></dependency>

然后代码中:

StopWatch watch = new StopWatch();watch.start();// 业务逻辑代码...watch.stop();System.out.println("Time Elapsed: " + watch.getTime() + "ms"); // 单位为毫秒

“Java中怎么计算一段程序的运行时间”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯