如何解决使用 JMH 在 Java 中的最大和最小时间基准
我想编写一个基准测试来跟踪执行某些 Java 代码所需的最大、最小和平均时间。
我阅读了 JMH(Java Microbenchmark Harness),它似乎符合我的需求,但我不太确定我应该使用哪种模式:
-
Mode.Throughput
通过在限时迭代中连续调用基准方法并计算我们执行该方法的次数来测量原始吞吐量。这似乎不是我要找的。p>
-
Mode.AverageTime
衡量执行基准方法所需的平均时间。这应该是我需求的 1/3。
-
Mode.SingleShottime
衡量单个基准方法执行运行所需的时间。这似乎不是我要找的。p>
-
Mode.SampleTime
对我来说是最晦涩的。Documentations on examples 声明它通过在有时间限制的迭代中运行方法来“采样”执行时间,但它不是测量总时间,而是测量在“某些”基准方法中花费的时间调用。什么意思?
什么模式可以为我提供最小和最大时间?是否有更多模式,或者是否有其他框架可以完成这项工作?
解决方法
如果您使用 @Benchmark
运行 @BenchmarkMode(Mode.AverageTime)
,作为奖励,您将获得如下输出:
Result "StopAllBenchmarks.measureRight":
2.387 ±(99.9%) 0.307 ns/op [Average]
(min,avg,max) = (2.339,2.387,2.526),stdev = 0.080
CI (99.9%): [2.079,2.694] (assumes normal distribution)
注意 min,max
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。