Created
March 23, 2017 08:46
-
-
Save JosePaumard/47809e36706275be557163912c45cea8 to your computer and use it in GitHub Desktop.
Runner for JMH with a modified output
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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