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

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则可以更加全面地进行性能测试。

阅读剩余 32%

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

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

相关文章

  • Ajax实现注册并选择头像后上传功能

    下面我将详细讲解“Ajax实现注册并选择头像后上传功能”的完整攻略。 实现步骤 1. 注册功能 首先,在前端页面中设计一个注册表单,表单中包含必要的字段,例如“用户名”、“密码”、“邮箱”等。当用户填写完表单后,通过Ajax将表单数据提交到后台进行处理。后台需要对用户提交的信息进行验证,例如判断用户名是否已存在、判断邮箱格式是否正确等等。若验证通过,则在后台…

    Java 2023年6月15日
    00
  • Java基础知识杂文

    Java基础知识杂文攻略 简介 Java是一门广泛应用于企业级应用软件开发的编程语言,深受开发者喜爱。本篇文章将为读者讲解Java基础知识杂文的攻略,以帮助读者更好地掌握Java编程。 步骤 步骤一:学习Java基础语法 Java基础语法包括:变量、数据类型、运算符、关键字、控制流等内容。学习Java基础语法是掌握Java编程的第一步。 示例: public…

    Java 2023年5月30日
    00
  • Java读写文件,在文件中搜索内容,并输出含有该内容的所有行方式

    下面是“Java读写文件,在文件中搜索内容,并输出含有该内容的所有行方式”的完整攻略: 读取文件 Java提供了多种读取文件的方式,其中比较常用的是使用FileInputStream或者BufferedReader类进行文件读取。下面是使用BufferedReader读取文件的示例代码: try (BufferedReader reader = new Bu…

    Java 2023年5月26日
    00
  • JSP验证码简单生成方法

    当我们网站需要进行用户登录、注册等操作时,我们通常需要使用验证码来防止机器人或者是恶意攻击,本文就来详细讲解一下如何使用JSP生成验证码。 一、验证码的生成方法 验证码的生成方法可以大致划分为以下步骤: 生成随机字符串 将随机字符串绘制成图片 将图片输出到网页上并传输随机字符串的值到后台进行验证 二、实现步骤 1. 生成随机字符串 使用Java的Random…

    Java 2023年6月15日
    00
  • Java使用MySQL实现连接池代码实例

    本文将详细讲解Java如何使用MySQL实现连接池。 什么是连接池? 对于Java Web应用或其他需要访问数据库的应用而言,每次需要访问数据库时都会不断地建立和销毁连接,这样既费时,也会使得数据库资源消耗。连接池是一种优雅的解决方案,它可以在应用启动时创建连接池,从而使得应用只在启动和关闭时创建和销毁连接,以达到减少连接创建和销毁的消耗的效果。 如何实现连…

    Java 2023年5月26日
    00
  • Spring boot应用启动后首次访问很慢的解决方案

    当Spring Boot应用启动后,由于需要初始化一些bean、加载配置文件等,首次访问时可能会比较慢。为了解决这个问题,我们可以采取以下措施: 1. 添加DevTools依赖 Spring Boot提供了DevTools依赖,可以实现热部署和自动重启功能,从而提高开发时的效率。同时,它还能解决首次访问慢的问题。只需要在项目的pom.xml文件中添加如下依赖…

    Java 2023年6月15日
    00
  • 浅析JDK和Tomcat的安装与配置方法

    浅析JDK和Tomcat的安装与配置方法 1. JDK的安装与配置 1.1 下载JDK JDK是Java Development Kit的简称,是Java开发所必须的环境。在安装JDK之前,需要先官网上下载JDK安装包。 示例1: 下载JDK 8.0 for Windows x64安装包 1.2 安装JDK 安装JDK的过程与一般软件的安装过程类似,运行安装…

    Java 2023年5月19日
    00
  • java中申请不定长度数组ArrayList的方法

    下面是详细的Java中申请不定长度数组ArrayList的方法的攻略。 什么是ArrayList ArrayList是Java中常用的一种动态数组,它可以自动扩容,无需手动指定大小。与传统数组相比,ArrayList可以动态添加、删除元素,同时支持快速容器排序等特性,非常方便实用。 如何申请ArrayList 在Java中,我们可以通过以下步骤申请并使用Ar…

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