You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMH基准测试输出非数字平均值 是JMH Bug还是基准测试问题?

异常输出

结论

这不是JMH的原生Bug,问题出在自行编写的基准测试代码上——出现非数值结果的核心原因是对应轮次的基准测试执行失败,没有产出有效统计数据。

具体逻辑

JMH只有在某一轮迭代完整执行完测试逻辑、没有中途中断的前提下,才会统计这一轮的耗时、吞吐量等性能指标。如果迭代运行过程中抛出未捕获异常、JVM异常退出、进程被外部信号打断,这一轮的统计数据就会缺失,最终结果汇总时对应位置就不会展示正常数值,通常会用<error>占位符填充,和截图里的表现完全匹配。

高频触发场景

  • 测试逻辑本身存在缺陷,运行到特定分支时触发空指针、数组越界、断言失败等运行时异常,直接中断当前轮次执行
  • JMH注解配置错误,比如@Warmup预热轮次、@Measurement测量轮次设置不合理,部分轮次启动时测试依赖的资源还未初始化完成,调用直接报错
  • 测试代码中混入了会终止JVM进程的逻辑,比如误调用System.exit(),直接打断测试流程导致数据丢失

排查方法

直接往上翻JMH运行的控制台日志,就能找到失败轮次打印的完整异常栈,顺着栈信息修复代码问题后重跑基准测试,就能得到正常的数值结果。

内容的提问来源于stack exchange,提问作者coderodde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 11:42:23