【发布时间】:2021-04-04 18:27:11
【问题描述】:
我想编写一个基准来跟踪执行某些 Java 代码所需的最大、最小和平均时间。
我阅读了有关 JMH(Java Microbenchmark Harness)的信息,它似乎符合我的需求,但我不太确定应该使用哪种模式:
-
Mode.Throughput通过在有时间限制的迭代中连续调用基准方法并计算我们执行该方法的次数来测量原始吞吐量。这似乎不是我要找的。p>
-
Mode.AverageTime测量执行基准方法所需的平均时间。这应该是我需求的 1/3。
-
Mode.SingleShotTime测量单个基准测试方法执行需要多长时间。这似乎不是我要找的。p>
-
Mode.SampleTime对我来说是最模糊的。Documentations on examples 声明它通过在时间限制的迭代中运行方法来“采样”执行时间,但它不是测量总时间,而是测量“一些”基准方法调用所花费的时间。什么意思?
什么模式可以为我提供最小和最大时间?是否还有其他模式,或者是否有其他框架可以完成这项工作?
【问题讨论】:
-
SingleShotTime用于测量 冷 启动,如 here 所述 -
我承认我也对
SampleTime感到困惑 - 我理解您链接的评论的含义,但我还没有找到它的真正用例。
标签: java benchmarking microbenchmark jmh