Java程序执行时间的2种简单方法

yizhihongxing

Java程序执行时间的2种简单方法

在Java中,有时需要了解程序的执行时间,以便进行性能优化和调试。本文将详细介绍Java程序执行时间的2种简单方法。

方法1:使用System.currentTimeMillis()

使用System.currentTimeMillis()方法可以简单地获取当前时间的毫秒数,并在程序的不同时间点进行比较,从而计算出程序执行时间,示例如下:

public class MethodOneExample {

    public static void main(String[] args) {
        long startTime = System.currentTimeMillis();
        // 这里是要计算时间的代码
        for (int i = 0; i < 1000000; i++) {
            // do something
        }
        long endTime = System.currentTimeMillis();
        System.out.println("程序执行时间:" + (endTime - startTime) + "毫秒");
    }

}

在上面的示例中,System.currentTimeMillis()被用来获取程序开始时间和结束时间,两者相减得出程序执行时间,并输出结果。

方法2:使用JMH(Java Microbenchmark Harness)

JMH是一个Java微基准测试工具,可以很方便地对Java程序的性能进行测试。以下是用JMH进行程序执行时间测试的示例代码:

public class MethodTwoExample {

    @Benchmark
    @BenchmarkMode(Mode.Throughput) // 表示测试吞吐量
    public void testMethod() {
        // 这里是要计算时间的代码
        for (int i = 0; i < 1000000; i++) {
            // do something
        }
    }

    public static void main(String[] args) throws RunnerException {
        Options opt = new OptionsBuilder()
                .include(MethodTwoExample.class.getSimpleName())
                .forks(1) // 表示执行测试的进程数,建议设为1
                .warmupIterations(1) // 表示预热的迭代次数
                .measurementIterations(3) // 表示测试的迭代次数
                .build();
        new Runner(opt).run();
    }

}

上面的示例中,@Benchmark用来标识测试方法,@BenchmarkMode表示测试的模式,OptionsBuilder用来构造测试选项,.include()表示需要测试的类,forks()表示测试进程数,warmupIterations()表示预热迭代次数,measurementIterations()表示测试迭代次数。执行以上代码可以得出以下结果:

Benchmark             Mode  Cnt      Score     Error   Units
MethodTwoExample.testMethod  thrpt    3  16552.713 ± 118.512 ops/ms

这里的Score表示每个操作的时间(单位为ms),从而可以推算出整个程序的执行时间。

总结

通过上述2种方法,可以准确地计算出Java程序的执行时间。System.currentTimeMillis()可以快速简单地实现计时功能,而JMH则可以更加全面地进行性能测试。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java程序执行时间的2种简单方法 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • CORBA对象生命周期之实现和内存管理

    CORBA对象生命周期之实现和内存管理 CORBA(Common Object Request Broker Architecture)是一种面向对象的远程调用协议,可以让分布在不同计算机上的对象进行通信和交互。在CORBA中,对象的生命周期非常重要,因为对象的创建、激活、销毁等过程涉及到多个对象之间的通信和资源的管理。本文将详细讲解CORBA对象生命周期之…

    Java 2023年6月15日
    00
  • java环境变量的配置方法图文详解【win10环境为例】

    Java环境变量的配置方法图文详解(Win10环境为例) Java编程利用JDK和JRE提供的库来开发和运行Java程序。在安装Java后,要配置Java环境变量,才能在命令行模式下运行Java程序。 下面是Java环境变量在Win10环境下的配置方法: 1. 下载JDK 首先,从官网上下载对应平台的JDK安装包。 示例说明:下载JDK8u291 Windo…

    Java 2023年5月23日
    00
  • 使用Spring Security OAuth2实现单点登录

    使用Spring Security OAuth2实现单点登录的完整攻略如下: 1. 概述 OAuth(Open Authorization)是一个标准的身份验证和授权协议,OAuth2是OAuth协议的下一个版本。OAuth2基于授权访问所有类型的应用程序,通过集中授权服务器授权用户访问受保护的资源。在实际应用中,OAuth2通常用来实现单点登录(SSO)的…

    Java 2023年5月20日
    00
  • SpringBoot Starter依赖原理与实例详解

    SpringBoot Starter依赖原理与实例详解 在SpringBoot中,我们可以使用Starter依赖来简化项目的依赖管理。本文将详细讲解SpringBoot Starter依赖原理与实例详解的完整攻略,并提供两个示例。 1. Starter依赖原理 在SpringBoot中,Starter依赖是一种特殊的依赖,它可以自动配置SpringBoot应…

    Java 2023年5月15日
    00
  • Spring Security和Shiro的相同点与不同点整理

    下面我将详细讲解“Spring Security和Shiro的相同点与不同点整理”,这里进行如下分类阐述:概念、使用场景、安全策略、授权与认证、拦截器等。 一、概念 Spring Security:基于spring的安全框架,目的是为了给Java应用程序提供声明式的安全访问控制。 Shiro:一个易于使用的Java安全框架,提供了身份验证、授权、密码和会话管…

    Java 2023年5月20日
    00
  • 全面分析Java方法的使用与递归

    下面我来详细讲解”全面分析Java方法的使用与递归”的完整攻略。 一、基础知识 在Java中,方法是一段有名字和参数的代码块,通过方法可以将代码结构化并将其组织成可重用的模块。方法的核心作用是实现代码的复用和结构化,同时也可以通过参数定制方法的行为。 Java方法的定义格式如下: 修饰符 返回类型 方法名(参数列表) { // 方法体 } 其中,修饰符表示方…

    Java 2023年5月26日
    00
  • java基础的详细了解第九天

    Java基础的详细了解第九天的攻略如下: 一、集合框架 集合框架是Java中非常重要的一部分内容,也是开发Java应用程序必不可少的一部分。集合框架主要由三个接口和13个类组成,我们需要熟练掌握各个类的使用方法,包括:ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap 等。 1. ArrayList Ar…

    Java 2023年5月26日
    00
  • JAVA抛出异常的三种形式详解

    JAVA抛出异常的三种形式详解 在Java中,任何程序都可能出现异常情况,这时候就需要通过抛出异常来处理,避免程序崩溃。在Java中,抛出异常有三种形式:抛出自定义异常,抛出Java API提供的异常和抛出运行时异常。 1. 抛出自定义异常 抛出自定义异常意味着创建一个新的异常类,该类继承自Exception或RuntimeException。创建自定义异常…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部