Benchmarks

JMH benchmarks with Configuration-as-Code

You can configure the instance that is started for benchmarks using Configuration as Code by extending CascJmhBenchmarkState in your benchmarks instead of JmhBenchmarkState and overriding the getResourcePath() and getEnclosingClass() methods.

getResourcePath() should returning the path to where your YAML configuration is located. getEnclosingClass() should return the class containing the state for the benchmark (MyBenchmark in the example below).

Example

Just like regular JMH benchmarks using JmhBenchmarkState, you need to have a public static inner class:

@JmhBenchmark
public class MyBenchmark {
public static class MyState extends CascJmhBenchmarkState {
@Nonnull
@Override
protected String getResourcePath() {
return "config.yaml";
}
@Nonnull
@Override
protected Class<?> getEnclosingClass() {
return MyBenchmark.class;
}
}
// ...
}

If you override the setup() method of CascJmhBenchmarkState, make sure to call super.setup() so that configuration as code works as intended.

You can find more examples in the Role Strategy Plugin.