Benchmark annotates the benchmark method.
JMH will produce the generated benchmark code for this method during compilation, register this method as the benchmark in the benchmark list, read out the default values from the annotations, and generally prepare the environment for the benchmark to run.
Benchmarks may use annotations to control different things in their operations.
org.openjdk.jmh.annotations package for available annotations, read their
Javadocs, and/or look through
JMH samples for their canonical uses. As the rule of thumb, most annotations
may be placed either at the
Benchmark method, or at the enclosing class,
to be inherited by all
Benchmark methods in the class.
Benchmark demarcates the benchmark payload, and JMH treats it specifically
as the wrapper which contains the benchmark code. In order to run the benchmark reliably,
JMH enforces a few stringent properties for these wrapper methods, including, but not
Stateclasses, which JMH will inject while calling the method (see
Statefor more details), or JMH infrastructure classes, like
Stateis placed on the enclosing class.
If you want to benchmark methods that break these properties, you have to write them
out as distinct methods and call them from
Benchmark method may declare Exceptions and Throwables to throw. Any exception actually raised and thrown will be treated as benchmark failure.
Copyright © 2012–2020 Oracle. All rights reserved.