RFR: Rework Results API
Sergey Kuksenko
sergey.kuksenko at oracle.com
Fri Aug 30 01:13:28 PDT 2013
Reviewed.
Modifications are accepted (as intermediate step :))
On 08/29/2013 11:09 PM, Aleksey Shipilev wrote:
> Hi again,
>
> Please review the cleanup for the Results API in JMH:
> http://cr.openjdk.java.net/~shade/jmh/results-rework-1.webrev/
> http://cr.openjdk.java.net/~shade/jmh/results-rework-1.changesets
>
> Overview:
> - API now publishes proper RunResult; greatly revised
> RunResult/IterationResult interactions; pruned lots of redundant code
> along the way
> - Results API is re-thinked in the following way: every benchmark
> always has the primary result, and unlimited number of named secondary
> results; this allows us to fold asymmetric benchmarks to report global
> primary score, as well as per-type secondary results
> - Profiler results are available through the Results API, and we can
> now think to fold some of the profiling results to the secondary
> benchmark results to report them in human-readable report, fit them into
> the averaging, etc.
> - OutputFormat and couple of internal classes is also retrofitted to
> make the internal API cleaner
>
> All in all, this allows me to do:
>
> public static void main(String[] args) throws RunnerException {
> Options opts = new OptionsBuilder()
> .include(".*")
> .warmupTime(TimeValue.milliseconds(100))
> .measurementTime(TimeValue.milliseconds(100))
> .jvmArgs("-server")
> .forks(5)
> .outputFormat(OutputFormatType.TextReport)
> .build();
>
> RunResult runResult = new Runner(opts).runSingle();
> Result result = runResult.getPrimaryResult();
>
> System.out.println();
> System.out.println("API replied benchmark score: "
> + result.getScore() + " "
> + result.getScoreUnit() + " over "
> + result.getStatistics().getN()
> + " iterations");
> }
>
> API deserves a bit of polishing, but this is already very cool. ;)
>
> Thanks,
> Aleksey.
>
--
Best regards,
Sergey Kuksenko
More information about the jmh-dev
mailing list