Java 性能测试工具 JMH

11 篇文章 0 订阅
5 篇文章 0 订阅

前言

最近在看《Java8函数式编程》时,发现了一个性能测试工具 JMH(Java Microbenchmark Harness)。这个工具方便了我们进行微基准测试。比如,在进行微基准测试时,我们想要测试的是“程序被JVM编译成机器代码(而不是直接执行字节码)”的执行速度。为了让JVM把要测试的代码编译成机器码,我们可能需要把要测试的代码进行“预热处理”(就是先跑几回,或十几回等,当运行的次多了,JVM就会生成机器码),JMH就提供“预热处理”等一系列的处理。

正文

一,学习文章:

  • JMH - Java Microbenchmark Harness:从零开始的学习JMH的使用。包括“自动创建JMH工程”、“和一些关键字的作用”、“测试时代码的优化方案”等。
  • JMH简介:一篇国外关于JMH文章的翻译,这篇文章和上面那篇文章内容有点有类似,但多了一些关于注解CPU的介绍。
  • JMH 官方介绍
  • JMH Samples

二,要注意的问题

  • 用Maven进行 install
    在写完 Benchmark 后,在执行之前,要使用mvn clean install命令进行生成Jar包。因为如果不执行这个命令,而直接IDE执行Main函数的话,会出现找不到/META-INF/BenchmarkList文件的错误。使用 mvn 命令的话,就会生成 BenchmarkList 文件。生成这个文件后,再使用IDE执行就没问题了。

  • 在 Intellij IDEA 中执行
    当在 Intellij IDEA 中执行的Main函数时,不要使用 Debug 模式执行,要使用 Run 模式执行。如果使用 Debug 模式执行的话,会出现下面的错误:

ERROR: transportFATAL  eErRrRoOrR  2i0n2 :n actoinvnee cmte tfhaoidl:e dJ:D WCPo nNno transports ineitcitailoinz erde,f ujsvemd
ERROR: JtDiWEP Transport dt_socket failed tror oirn=iAtGiEaNlTi_zEeRROR_TRANSPORT_INIT,( 1T9R7)
ANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [debugInit.c:750]
<forked VM failed with exit code 134>
<stdout last='20 lines'>
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
</stdout>
<stderr last='20 lines'>
ERROR: transport error 202: connect failed: Connection refused
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [debugInit.c:750]
</stderr>

# Run complete. Total time: 00:00:00

Benchmark  Mode  Cnt  Score   Error  Units
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值