Skip to content

Instantly share code, notes, and snippets.

@JosePaumard
Created March 23, 2017 08:46
Show Gist options
  • Save JosePaumard/47809e36706275be557163912c45cea8 to your computer and use it in GitHub Desktop.
Save JosePaumard/47809e36706275be557163912c45cea8 to your computer and use it in GitHub Desktop.
Runner for JMH with a modified output
import org.junit.runners.model.InitializationError;
import org.openjdk.jmh.results.IterationResult;
import org.openjdk.jmh.results.RunResult;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import java.util.Collection;
import java.util.Comparator;
/**
* Created by José
*/
public class JMHRunner {
private final Options options;
public static final Comparator<IterationResult> ITERATION_RESULT_COMPARATOR =
Comparator.comparing(iterationResult -> iterationResult.getPrimaryResult().getScore());
public JMHRunner(Options options) throws InitializationError {
this.options = options;
}
public Collection<RunResult> run() throws RunnerException {
Collection<RunResult> runResults = new Runner(options).run();
runResults.forEach(
runResult -> runResult.getBenchmarkResults().forEach(
benchmarkResult -> {
Collection<IterationResult> iterationResults = benchmarkResult.getIterationResults();
IterationResult maxIterationResult = iterationResults.stream()
.sorted(ITERATION_RESULT_COMPARATOR)
.limit(10)
.max(ITERATION_RESULT_COMPARATOR)
.get();
iterationResults.removeIf(iterationResult -> ITERATION_RESULT_COMPARATOR.compare(iterationResult, maxIterationResult) > 0);
}
)
);
TextResultFormat resultFormat = new TextResultFormat(System.out);
resultFormat.writeOut(runResults);
return runResults;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment