我们有很多JMH测试,在运行测试时(使用gradle JMH plugin),他们需要长时间。我们所有的测试都是单线程的。
有人可以建议如何最好地并行执行JMH测试吗?我们的构建盒有足够的CPU可用。
我们当前配置的JMH gradle插件的输出(所有默认值)
# JMH 1.12 ...
# VM options: <none>
# Warmup: 20 iterations, 1 s each
# Measurement: 20 iterations, 1 s each
# Timeout: 10 min per iteration
# Threads: 1 thread, will synchronize iterations
# Benchmark mode: Throughput, ops/time
答案 0 :(得分:2)
出于稳定性/可重复性的原因,性能测试不应该并行运行。如果你试图在同一个系统上运行几个JMH实例,JMH实际上会抱怨。
如果证明不会违反测试稳定性,则可以减少执行时间。例如。如果您知道在5秒的预热时间后工作负载稳定在某个分数,您可以进行5x1s的预热迭代。同样适用于测量:如果您知道较少的测量迭代不会影响您获得的错误,那么也可以减少测量。与叉子的数量相同。
JMH提供了两种注释来覆盖默认的运行模式(参见例如JMHSample20_Annotations)和命令行选项(与-h
一起运行以获取列表)。