【Java】 Java中如何测量方法执行时间?

>
> 【痕迹】QQ+微信朋友圈和聊天记录分析工具
>
> (1)纯Python语言实现,使用Flask后端,本地分析,不上传个人数据。
>
> (2)内含QQ、微信聊天记录保存到本地的方法,真正实现自己数据自己管理。
>
> (3)数据可视化分析QQ、微信聊天记录,提取某一天的聊天记录与大模型对话。
> 
>  下载地址:https://www.alipan.com/s/x6fqXe1jVg1
>

基本原理

在Java开发过程中,我们经常需要测量某个方法或代码块的执行时间,以评估程序的性能。Java提供了多种方式来实现这一功能,其中最简单直接的方法是使用System.currentTimeMillis()或者System.nanoTime()

  • System.currentTimeMillis()返回的是自1970年1月1日00:00:00 GMT以来的毫秒数,它适用于需要较粗略时间测量的场景。
  • System.nanoTime()提供了更高的时间精度,以纳秒为单位,适用于需要精确测量的场景。

代码示例

示例1:使用System.currentTimeMillis()
public class TimeExample1 {
    public static void main(String[] args) {
        long startTime = System.currentTimeMillis();

        // 待测量的方法或代码块
        someMethod();

        long endTime = System.currentTimeMillis();
        System.out.println("执行时间(毫秒): " + (endTime - startTime));
    }

    public static void someMethod() {
        // 模拟耗时操作
        try {
            Thread.sleep(1000); // 休眠1秒
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
示例2:使用System.nanoTime()
public class TimeExample2 {
    public static void main(String[] args) {
        long startTime = System.nanoTime();

        // 待测量的方法或代码块
        someMethod();

        long endTime = System.nanoTime();
        System.out.println("执行时间(纳秒): " + (endTime - startTime));
    }

    public static void someMethod() {
        // 模拟耗时操作
        for (int i = 0; i < 1000000000; i++) {
            // 空循环
        }
    }
}
示例3:使用java.time包中的Instant
import java.time.Instant;

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

        // 待测量的方法或代码块
        someMethod();

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

    public static void someMethod() {
        // 模拟耗时操作
        try {
            Thread.sleep(2000); // 休眠2秒
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

注意事项

  • 使用System.currentTimeMillis()Instant.now()测量的时间是相对于某个时间点的,它们返回的是时间戳,因此适合用于测量两个时间点之间的时间差。
  • System.nanoTime()返回的是自某个固定点以来的纳秒数,它更适用于测量短时间间隔,因为它的精度更高。
  • 在多线程环境下,如果需要测量线程执行时间,应确保测量的开始和结束点在同一个线程中。
  • 测量时间的方法可能会受到系统时钟的影响,特别是在高负载或多任务环境中。

结论

测量Java方法的执行时间是一个重要的性能分析手段。通过使用System.currentTimeMillis()System.nanoTime()java.time包中的类,我们可以根据不同的需求选择合适的方法来进行时间测量。理解这些方法的工作原理和适用场景,可以帮助我们更准确地评估程序性能,从而进行有效的优化。

>
> 【痕迹】QQ+微信朋友圈和聊天记录分析工具
>
> (1)纯Python语言实现,使用Flask后端,本地分析,不上传个人数据。
>
> (2)内含QQ、微信聊天记录保存到本地的方法,真正实现自己数据自己管理。
>
> (3)数据可视化分析QQ、微信聊天记录,提取某一天的聊天记录与大模型对话。
>
> 下载地址:https://www.alipan.com/s/x6fqXe1jVg1
>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值