Java Microbenchmarking Harness (JMH)中注释@OperationsPerInvocation
的JavaDoc状态:
value
public abstract int value
Returns:
单个基准测试调用的操作数。默认值:1
作为JMH的新手,我想知道这里意味着什么类型的操作(字节码操作,汇编代码操作,Java操作等)。
这个问题自然是指JMH中使用"操作"一词的所有地方(文档、输出、注释等)(例如operation/time"单位或者"时间单位/操作")。
在JMH中,"操作"是一个抽象的工作单元。参见示例结果:
Benchmark Mode Cnt Score Error Units
MyBenchmark.testMethod avgt 5 5.068 ± 0.586 ns/op
这里,每次操作的性能为5.068纳秒。
名义上,一个操作是一个@Benchmark
调用。一些注释,比如@OperationsPerInvocation
,可能会告诉我们单个@Benchmark
调用意味着N个操作。类似地,批处理运行,例如通过@Measurement(batchSize = N)
,可能会说一个操作包含N个@Benchmark
调用。