在java中计算代码运行时效

方式一:使用 System.currentTimeMillis() 方法(基于毫秒级时间戳)

public class CodeRunningTimeExample1 {
    public static void main(String[] args) {
        long startTime = System.currentTimeMillis();

        // 这里放置你要测试运行时间的代码块
        for (int i = 0; i < 10000000; i++) {
            // 简单示例,进行一个循环操作
            Math.pow(i, 2);
        }

        long endTime = System.currentTimeMillis();
        long runningTime = endTime - startTime;
        System.out.println("代码运行时间:" + runningTime + " 毫秒");
    }
}
  • 首先通过调用 System.currentTimeMillis() 方法获取代码开始运行时的当前时间戳(以毫秒为单位,从 1970 年 1 月 1 日 00:00:00 UTC 到当前时刻的时间间隔),并将其存储在 startTime 变量中。
  • 然后在注释所指示的位置放置你实际想要测试运行时间的代码段,这里只是简单地使用了一个循环进行示例,你可以替换成任何你需要测试的代码逻辑,比如复杂的算法实现、数据库查询操作等。
  • 当这段代码执行完后,再次调用 System.currentTimeMillis() 获取结束时的时间戳并存放在 endTime 变量中。
  • 最后通过 endTime - startTime 计算出时间差,也就是代码运行所花费的时间(单位为毫秒),并将结果输出显示。

方式二:使用 System.nanoTime() 方法(基于纳秒级时间戳,更精确,常用于性能调优等对精度要求高的场景)

public class CodeRunningTimeExample2 {
    public static void main(String[] args) {
        long startTime = System.nanoTime();

        // 此处放置要测试运行时间的代码
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < 10000; i++) {
            stringBuilder.append(i);
        }

        long endTime = System.nanoTime();
        long runningTime = endTime - startTime;
        System.out.println("代码运行时间:" + runningTime + " 纳秒");
    }
}
  • 同样先使用 System.nanoTime() 方法获取代码开始运行瞬间的纳秒级时间戳(精度比毫秒更高),存储在 startTime 变量中。这个时间戳表示从某个固定的起始点到当前时刻的纳秒数,不过起始点具体是什么并不需要我们关心,重点是可以通过前后时间戳的差值来准确衡量时间间隔。
  • 接着在相应位置放入实际要测试运行时间的代码,这里以使用 StringBuilder 拼接字符串的操作作为示例代码块,你可以根据实际需求替换为其他代码逻辑。
  • 当代码执行完毕后,再次调用 System.nanoTime() 获取结束时刻的时间戳存于 endTime 变量中。
  • 最后通过 endTime - startTime 算出代码运行的时间间隔(单位为纳秒),并输出显示结果,这样就能得到所测代码较为精确的运行时间了。

方式三:使用 Instant 和 Duration 类(Java 8 及以后版本,代码更简洁易读,基于时间点和时间段的概念)

import java.time.Duration;
import java.time.Instant;

public class CodeRunningTimeExample3 {
    public static void main(String[] args) {
        Instant start = Instant.now();

        // 在这里插入要测试运行时间的代码
        int sum = 0;
        for (int i = 1; i <= 10000; i++) {
            sum += i;
        }

        Instant end = Instant.now();
        Duration duration = Duration.between(start, end);
        System.out.println("代码运行时间:" + duration.toMillis() + " 毫秒");
    }
}

 

  • 首先利用 Instant.now() 方法获取代码开始运行时刻对应的时间点,存储在 start 变量中,Instant 类表示一个瞬间的时间点,它基于 UTC 时间标准,不包含时区信息。
  • 然后在指定位置放置需要测试运行时间的代码,这里使用一个简单的循环求整数和作为示例代码内容,你可按需替换。
  • 当代码执行完成后,再次调用 Instant.now() 获取结束时刻的时间点并存放在 end 变量中。
  • 接着使用 Duration.between(start, end) 方法,它会根据两个时间点(start 和 end)计算出它们之间的时间段,返回的 Duration 类对象表示这个时间段,最后通过 toMillis() 方法将时间段转换为以毫秒为单位的时长,并输出显示,以此得到代码运行所花费的时间长度。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小懒懒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值