计算方法执行时间,你是用那种方式?

1、前言

在 Java 程序开发的进程里,性能调优宛如一座高耸且亟待攀登的山峰,而获取程序运行时间则是攀爬途中不可或缺的关键工具。Java 以其卓越的跨平台性、强大的生态系统以及丰富的类库,被广泛应用于 Web 开发、企业级应用、移动后端乃至大型游戏服务端等多元领域。
每一个 Java 开发者都深知,代码的高效执行对于项目成败至关重要。获取运行时间能够为我们提供最直观的性能反馈,帮助我们精准定位代码中耗时较长的部分。当开发一款高并发的电商系统,面对海量订单处理时,通过测量运行时间,可排查出导致系统响应延迟的核心代码块,进而优化算法、调整资源分配,提升系统吞吐量。在大数据分析场景下,处理 TB 级数据的算法效率直接关乎分析结果的时效性,获取运行时间能够助力开发者从众多算法中筛选出最优解,大幅缩短数据处理周期。
下面,让我们深入探索 Java 中获取运行时间的方法,为提升代码性能筑牢根基。

2、方法

2.1 System.currentTimeMillis()

 public void test25() {
        long start = System.currentTimeMillis();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        long end = System.currentTimeMillis();
        System.out.println(String.format("Sleep time: %d ms" , (end - start)));
    }

2.2 System.nanoTime()

    public void test24() {
        long start = System.nanoTime();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        long end = System.nanoTime();
        System.out.println(String.format("Sleep time: %d ms" , (end - start)/1000000));
    }

2.3 StopWatch【spring】

 public void test23() throws InterruptedException {
        // 创建 StopWatch 实例
        StopWatch stopWatch = new StopWatch("test23");

        // 启动计时
        stopWatch.start("Task 1");
        // 模拟任务 1
        Thread.sleep(1000);
        stopWatch.stop();

        // 启动计时
        stopWatch.start("Task 2");
        // 模拟任务 2
        Thread.sleep(2000);
        stopWatch.stop();

        // 输出总耗时
        System.out.println(stopWatch.prettyPrint());
        System.out.println("Total time: " + stopWatch.getTotalTimeMillis() + " ms");
    }

2.4 StopWatch【google】

依赖

       <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>31.0.1-jre</version>
        </dependency>

例子

 public void test22() {
        Stopwatch stopwatch = Stopwatch.createStarted();
        // 模拟一些操作
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        stopwatch.stop();
        System.out.println("Elapsed time: " + stopwatch.elapsed(java.util.concurrent.TimeUnit.MILLISECONDS) + " ms");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值