【Java】三种方式快速统计代码运行时长

方法一 (推荐)

使用apache提供的工具类

import org.apache.commons.lang3.time.StopWatch;

public class Test {
    public static void main(String[] args) {
        //初始化
        StopWatch stopWatch = new StopWatch();

        //开始时间统计
        stopWatch.start();
        method();
        //结束时间统计
        stopWatch.stop();

        //运行时间ns
        System.out.println(stopWatch.getNanoTime());
        //运行时间ms
        System.out.println(stopWatch.getTime());
    }

    private static void method() {
        for (int i = 0; i < 1000000; i++) {
            Math.sqrt(1.44);
        }
    }
}

方法二

这个是最原始的方法,来统计代码的运行时长了。

public class tmpTest {
    public static void main(String[] args) {
        //开始时间
        long stime = System.currentTimeMillis();
        Math.sqrt(1.44);
        //结束时间
        long etime = System.currentTimeMillis();

        //开始时间
        long stime1 = System.nanoTime();
        Math.sqrt(1.44);
        //结束时间
        long etime1 = System.nanoTime();

        //计算执行时间
        System.out.printf("执行时长:%d 毫秒.", (etime - stime));

        //计算执行时间
        System.out.printf("执行时长:%d 纳秒.", (stime1 - etime1));
    }
}

方法三

自己定义Timer类,来实现代码运行时长的统计。(参照OnJava 8里面的类)

  • 步骤一:自定义一个运行时间统计时长的类
import static java.util.concurrent.TimeUnit.*;

/**
 * @author xiucai
 * @date 2022/6/12 10:06
 * @description OnJava8 作者封装的代码运行时间统计的类
 */
public class Timer {
    private long start = System.nanoTime();

    public long duration() {
        return NANOSECONDS.toMillis(
                System.nanoTime() - start);
    }

    public static long duration(Runnable test) {
        Timer timer = new Timer();
        test.run();
        return timer.duration();
    }
}
  • 步骤二:使用
public class Test {
    public static void main(String[] args) throws ClassNotFoundException {
        //使用自己定义的那个运行时长统计的类
        Timer timer = new Timer();
        Math.sqrt(999999);
        //输出代码的运行时长(单位ns)
        System.out.println(timer.duration());
    }
}