Fixture&State settings and impact on measurement

Yann Le Tallec ylt at letallec.org
Fri May 17 10:56:47 PDT 2013


Hello,

Here is a trivial benchmark:

@State(Scope.Thread)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public class StateAndFixture {
    @Setup(Level.Iteration)
    public void setup() {}

    @GenerateMicroBenchmark(BenchmarkType.AverageTimePerOp)
    public void baseline() {}
}

Here are the average run times measured on my machine with different
settings:

@State(Scope.Thread) / @Setup(Level.Iteration) => 0.6 ns
@State(Scope.Benchmark) / @Setup(Level.Iteration) => 0.6 ns
@State(Scope.Thread) / @Setup(Level.Invocation) => 11 ns
@State(Scope.Benchmark) / @Setup(Level.Invocation) => 19 ns

Is this the expected behaviour?
Should one simply adjust actual measurements by subtracting those
numbers(i.e. is this a fixed and stable overhead)?

Many thanks,
Yann


More information about the jmh-dev mailing list