专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

java测试详解

来源:小易整编  作者:小易  发布时间:2023-03-07 04:12
摘要:java测试详解在日常开发中,我们对一些代码的调用或者工具的使用会存在多种选择方式,在不确定他们性能的时候,我们首先想要做的就是去测量它。大多数时候,我们会简单的采用多次计数的方式来测量,来看这个方法的总耗时。但是,如果熟悉JVM类加载机制...

3. 执行测试

运行 JMH 基准测试有两种方式,一个是生产jar文件运行,另一个是直接写main函数或者放在单元测试中执行。

生成jar文件的形式主要是针对一些比较大的测试,可能对机器性能或者真实环境模拟有一些需求,需要将测试方法写好了放在linux环境执行。

具体命令如下

$ mvn clean install $ java -jar target/benchmarks.jar

我们日常中遇到的一般是一些小测试,比如我上面写的例子,直接在IDE中跑就好了。

启动方式如下:

public static void main(String[] args) throws RunnerException {    Options opt = new OptionsBuilder()            .include(LinkedListIterationBenchMark.class.getSimpleName())            .forks(1)            .warmupIterations(2)            .measurementIterations(2)         .output("E:/Benchmark.log")            .build();    new Runner(opt).run(); }

4. 报告结果

输出结果如下,

最后的结果:

Benchmark                                      Mode  Cnt     Score   Error  Units LinkedListIterationBenchMark.forEachIterate   thrpt    2  1192.380          ops/s LinkedListIterationBenchMark.forIndexIterate  thrpt    2   206.866          ops/s

整个过程:

# Detecting actual CPU count: 12 detected # JMH version: 1.21 # VM version: JDK 1.8.0_131, Java HotSpot(TM) 64-Bit Server VM, 25.131-b11 # VM invoker: C:\Program Files\Java\jdk1.8.0_131\jre\bin\java.exe # VM options: -javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2018.2.2\lib\idea_rt.jar=65175:D:\Program Files\JetBrains\IntelliJ IDEA 2018.2.2\bin -Dfile.encoding=UTF-8 # Warmup: 2 iterations, 10 s each # Measurement: 2 iterations, 10 s each # Timeout: 10 min per iteration # Threads: 12 threads, will synchronize iterations # Benchmark mode: Throughput, ops/time # Benchmark: org.sample.jmh.LinkedListIterationBenchMark.forEachIterate # Run progress: 0.00% complete, ETA 00:01:20 # Fork: 1 of 1 # Warmup Iteration   1: 1189.267 ops/s # Warmup Iteration   2: 1197.321 ops/s Iteration   1: 1193.062 ops/s Iteration   2: 1191.698 ops/s Result "org.sample.jmh.LinkedListIterationBenchMark.forEachIterate":  1192.380 ops/s # JMH version: 1.21 # VM version: JDK 1.8.0_131, Java HotSpot(TM) 64-Bit Server VM, 25.131-b11 # VM invoker: C:\Program Files\Java\jdk1.8.0_131\jre\bin\java.exe # VM options: -javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2018.2.2\lib\idea_rt.jar=65175:D:\Program Files\JetBrains\IntelliJ IDEA 2018.2.2\bin -Dfile.encoding=UTF-8 # Warmup: 2 iterations, 10 s each # Measurement: 2 iterations, 10 s each # Timeout: 10 min per iteration # Threads: 12 threads, will synchronize iterations # Benchmark mode: Throughput, ops/time # Benchmark: org.sample.jmh.LinkedListIterationBenchMark.forIndexIterate # Run progress: 50.00% complete, ETA 00:00:40 # Fork: 1 of 1 # Warmup Iteration   1: 205.676 ops/s # Warmup Iteration   2: 206.512 ops/s Iteration   1: 206.542 ops/s Iteration   2: 207.189 ops/s Result "org.sample.jmh.LinkedListIterationBenchMark.forIndexIterate":  206.866 ops/s # Run complete. Total time: 00:01:21 REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial experiments, perform baseline and negative tests that provide experimental control, make sure the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. Do not assume the numbers tell you what you want them to tell. Benchmark                                      Mode  Cnt     Score   Error  Units LinkedListIterationBenchMark.forEachIterate   thrpt    2  1192.380          ops/s LinkedListIterationBenchMark.forIndexIterate  thrpt    2   206.866          ops/s

注解介绍

下面我们来详细介绍一下相关的注解。

@BenchmarkMode

微基准测试类型。JMH 提供了以下几种类型进行支持:

类型描述
Throughput每段时间执行的次数,一般是秒
AverageTime平均时间,每次操作的平均耗时
SampleTime在测试中,随机进行采样执行的时间
SingleShotTime在每次执行中计算耗时
All所有模式

可以注释在方法级别,也可以注释在类级别。

@BenchmarkMode(Mode.All) public class LinkedListIterationBenchMark { ... } @Benchmark @BenchmarkMode({Mode.Throughput, Mode.SingleShotTime}) public void m() { ... }

@Warmup

这个单词的意思就是预热,iterations = 3就是指预热轮数。

@Benchmark @BenchmarkMode({Mode.Throughput, Mode.SingleShotTime}) @Warmup(iterations = 3) public void m() { ... }

@Measurement

正式度量计算的轮数。

  • iterations 进行测试的轮次
  • time 每轮进行的时长
  • timeUnit时长单位

@Benchmark @BenchmarkMode({Mode.Throughput, Mode.SingleShotTime}) @Measurement(iterations = 3) public void m() { ... }

@Threads

每个进程中的测试线程。

@Threads(Threads.MAX) public class LinkedListIterationBenchMark { ... }



本文地址:百科问答频道 https://www.neebe.cn/wenda/918236_2.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


百科问答
小编:小易整编
相关文章相关阅读
  • 无线WLAN网络测试的五个简单步骤分享

    无线WLAN网络测试的五个简单步骤分享

    在上篇文章跟各位网友分享“如何解决无线路由器网络自动断线?”了,相信大家对于无线WLAN的各个方面大家应该都有一些了解了。那么对于无线WLAN测试,有哪些判断标准呢?可能对大家来说都还有一些不清楚。那么本文将为大家列出5个简单的步骤帮助您来...

  • 电脑测试是什么意思?

    电脑测试是什么意思?

    电脑测试,又称计算机测试,是一种利用软件测试方法工具开展电脑软件及其硬件功能检测,诊断及收集系统故障资料,以确认系统是否符合用户期望的测试形式。它是计算机网络和系统维护更新和改善性能的重要手段,其目的是通过检测系统功能及响应,以确保系统质...

  • QA测试是什么意思?

    QA测试是什么意思?

    QA测试(也称为质量控制测试)是指测试质量控制的过程,它是识别软件中的错误和促进软件质量提高的一种方法。QA测试的目的是确保软件的质量,让用户体验更好。QA测试被认为是一种风险管理。它可以帮助开发团队更积极地探索可能存在的问题,大部分问题...

  • 冒烟测试是什么意思?

    冒烟测试是什么意思?

    冒烟测试(SmokeTest)是一种软件测试方法,主要用于软件的外部和核心功能的简单检测,又称点火测试(IgnitionTest)。冒烟测试主要用于在软件发布临近之前对软件功能进行快速通过检查,也可以精简测试代码覆盖度,减少不必要的...

  • 测试版是什么意思?

    测试版是什么意思?

    测试版是在软件开发过程中的一个重要环节,它是通过测试过程来避免出现任何错误,让产品在最终发布时有质量的保证。测试版的本身是一个衍生的版本,一般具备最终版本的一些功能,可以由开发者或企业提供给公众或部分内部员工,从而在发行之前了解真正情况,...

  • GPU测试工具是什么意思?

    GPU测试工具是什么意思?

    GPU测试工具是一款用来测试图形处理器(GPU)性能的软件,它可以帮助用户快速检测图形处理器(GPU)的性能,确定硬件设备是否符合预期要求。当用户更换硬件设备时,可以使用这种工具快速了解硬件设备的性能情况,有助于确定是否符合应用程序运行要...

  • 打印测试是什么意思?

    打印测试是什么意思?

    打印测试是指对打印机进行一系列检测来评估打印质量的评估过程。这包括为不同类型的要求测试打印机的能力和性能,以及测试支持文件格式支持、色彩准确度等。首先,在执行打印测试之前,要准备一些必要的测试资料,如测试纸、测试印刷品等。之后,可以通过硬...

  • 灰盒测试是什么意思?

    灰盒测试是什么意思?

    灰盒测试是指在软件或硬件的开发和发布前进行的一种测试。它能够提高系统设计质量、检查程序质量以及寻找程序存在的bug,并对其进行管理和控制。灰盒测试的内容和方法主要包括:检查需求文档,执行功能测试,执行单元测试,编写测试脚本,做性能测试,做...

  • 周排行
  • 月排行
  • 年排行

精彩推荐