JMH 中的操作数到底是多少?

What exactly is number of operations in JMH?

JavaJava Microbenchmarking Harness (JMH) 中注释 @OperationsPerInvocation 的文档指出:

value public abstract int value

Returns: Number of operations per single Benchmark call. Default: 1

作为 JMH 的新手,我想知道这里指的是什么类型的操作(字节码操作、汇编代码操作、Java 操作等)。

这个问题自然是指 JMH 中所有使用术语 'operation' 的地方(文档、输出、评论等)(例如“operation/time "单位或"时间unit/operation").

在JMH中,"operation"是一个抽象的工作单元。参见例如样本结果:

Benchmark               Mode  Cnt  Score   Error  Units
MyBenchmark.testMethod  avgt    5  5.068 ± 0.586  ns/op

此处,每次操作的性能为 5.068 纳秒。

名义上,一个操作就是一个 @Benchmark 调用。一些注释,例如 @OperationsPerInvocation 可能会告诉您单个 @Benchmark 调用意味着 N 次操作。同样,批处理运行,例如via @Measurement(batchSize = N) 可能表示一个操作包含 N @Benchmark 次调用。