jmh中的操作数究竟是多少?

Ang*_*ket 7 java benchmarking jmh

Java Microbenchmarking工具(jmh)中的注释@OperationsPerInvocation的Javadoc指出:

value public abstract int value

返回:每个Benchmark调用的操作数.默认值:1

作为jmh的新手,我想知道这里的操作类型(字节代码操作,汇编代码操作,java操作......).

编辑(进一步澄清):这个问题自然是指jmh(文档,输出,注释......)中使用术语"操作"的所有地方.(例如,操作/时间单位或时间单位/操作).有关简明说明,请参阅下面接受的答案.

Ale*_*lev 11

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

Benchmark               Mode  Cnt  Score   Error  Units
MyBenchmark.testMethod  avgt    5  5.068 ± 0.586  ns/op
Run Code Online (Sandbox Code Playgroud)

这里,每个操作的性能为5.068纳秒.

名义上,一个操作是一次@Benchmark调用.一些注释,@OperationsPerInvocation可能会告诉单个@Benchmark调用意味着N个操作.类似地,批量运行,例如via @Measurement(batchSize = N)可以说一个操作包含N个@Benchmark调用.