From richard.bair at oracle.com Mon Aug 5 12:20:57 2013 From: richard.bair at oracle.com (Richard Bair) Date: Mon, 5 Aug 2013 12:20:57 -0700 Subject: How to use JMH when not using Maven Message-ID: <35EFE9CC-E497-46BA-B03A-9D9D797E9D01@oracle.com> Hi, In OpenJFX we use Gradle as our build system, not Maven. I'm looking at integrating jmh into our build system so that we can write some microbenchmarks (and some milli benchmarks and FPS benchmarks for GUI applications). To start with, I've written a very simple benchmark to test String switch feature of JDK 7. However I don't know how run this benchmark without using Maven. Are there any documents to describe the process? How do I prepare the benchmarks to be in a form that jmh can then execute? Thanks Richard From aleksey.shipilev at oracle.com Mon Aug 5 12:27:27 2013 From: aleksey.shipilev at oracle.com (Aleksey Shipilev) Date: Mon, 05 Aug 2013 23:27:27 +0400 Subject: How to use JMH when not using Maven In-Reply-To: <35EFE9CC-E497-46BA-B03A-9D9D797E9D01@oracle.com> References: <35EFE9CC-E497-46BA-B03A-9D9D797E9D01@oracle.com> Message-ID: <51FFFC9F.6030007@oracle.com> Hi Richard, On 08/05/2013 11:20 PM, Richard Bair wrote: > Are there any documents to describe the process? Nope. Up to this point, we considered the Maven bindings as the part of our internal API. Time for a change! > How do I prepare the benchmarks to be in a form that jmh can then > execute? Since we are generating the synthetic code, you generally need to "just" compile the benchmarks with the JMH's annotation processor on board, and then pack all the classes and resources into the JAR with the JMH Main-Class. -Aleksey. From aleksey.shipilev at oracle.com Mon Aug 5 13:22:09 2013 From: aleksey.shipilev at oracle.com (Aleksey Shipilev) Date: Tue, 06 Aug 2013 00:22:09 +0400 Subject: How to use JMH when not using Maven In-Reply-To: <51FFFC9F.6030007@oracle.com> References: <35EFE9CC-E497-46BA-B03A-9D9D797E9D01@oracle.com> <51FFFC9F.6030007@oracle.com> Message-ID: <52000971.7080607@oracle.com> On 08/05/2013 11:27 PM, Aleksey Shipilev wrote: > On 08/05/2013 11:20 PM, Richard Bair wrote: >> How do I prepare the benchmarks to be in a form that jmh can then >> execute? > > Since we are generating the synthetic code, you generally need to "just" > compile the benchmarks with the JMH's annotation processor on board, and > then pack all the classes and resources into the JAR with the JMH > Main-Class. This thing works for me: ----------- 8< -------------------------------------------------------- apply plugin: 'java' apply plugin: 'shadow' buildscript { repositories { mavenCentral() maven { name 'Shadow' url 'http://dl.bintray.com/content/johnrengelman/gradle-plugins' } } dependencies { classpath 'org.gradle.plugins:shadow:0.7.4' } } jar { manifest { attributes 'Main-Class': 'org.openjdk.jmh.Main' } } repositories { mavenLocal() mavenCentral() } build.doLast { tasks.shadow.execute() } shadow { outputFile = new File("build/libs/microbenchmarks.jar") } dependencies { compile group: 'org.openjdk.jmh', name: 'jmh-core', version: '1.0-SNAPSHOT' } ----------- 8< -------------------------------------------------------- Thanks, Aleksey. From aleksey.shipilev at oracle.com Thu Aug 8 05:06:37 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Thu, 08 Aug 2013 12:06:37 +0000 Subject: hg: code-tools/jmh: 5 new changesets Message-ID: <20130808120638.2B263486D5@hg.openjdk.java.net> Changeset: 158f5aae72ce Author: shade Date: 2013-08-08 14:37 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/158f5aae72ce Fix a few FindBugs warnings. ! jmh-core/src/main/java/org/openjdk/jmh/output/OutputFormatFactory.java ! jmh-core/src/main/java/org/openjdk/jmh/processor/internal/GenerateMicroBenchmarkProcessor.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/CompilerHints.java ! jmh-core/src/main/java/org/openjdk/jmh/util/ClassUtils.java Changeset: 24e09cb79197 Author: shade Date: 2013-08-08 14:39 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/24e09cb79197 Relax duplicate rule in Checkstyle. ! jmh-core/src/main/resources/checkstyle.xml Changeset: 3f3f5ea4277d Author: shade Date: 2013-08-08 14:53 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/3f3f5ea4277d Annotation methods should be implicitly public. ! jmh-core/src/main/java/org/openjdk/jmh/annotations/Fork.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/GenerateMicroBenchmark.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/Measurement.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/MicroBenchmark.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/OperationsPerInvocation.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/OutputTimeUnit.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/Setup.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/State.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/TearDown.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/Threads.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/Warmup.java Changeset: 223d5012fd4e Author: shade Date: 2013-08-08 14:53 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/223d5012fd4e Invert Executor.isShutdownAllowed ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseMicroBenchmarkHandler.java Changeset: 770903755f02 Author: shade Date: 2013-08-08 15:33 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/770903755f02 More cleanups. ! jmh-core/src/main/java/org/openjdk/jmh/ForkedMain.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/CompilerControl.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/BlackHole.java ! jmh-core/src/main/java/org/openjdk/jmh/processor/internal/CompilerControlProcessor.java ! jmh-core/src/main/java/org/openjdk/jmh/processor/internal/GenerateMicroBenchmarkProcessor.java ! jmh-core/src/main/java/org/openjdk/jmh/processor/internal/MethodGroup.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/ForkedRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParametersFactory.java ! jmh-core/src/main/java/org/openjdk/jmh/util/ClassUtils.java ! jmh-core/src/main/java/org/openjdk/jmh/util/internal/SampleBuffer.java From aleksey.shipilev at oracle.com Fri Aug 9 12:46:04 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Fri, 09 Aug 2013 19:46:04 +0000 Subject: hg: code-tools/jmh: Make more class-level annotations @Inherited. Message-ID: <20130809194606.2202348764@hg.openjdk.java.net> Changeset: 2ec65a76bbb8 Author: shade Date: 2013-08-09 23:44 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/2ec65a76bbb8 Make more class-level annotations @Inherited. ! jmh-core/src/main/java/org/openjdk/jmh/annotations/BenchmarkMode.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/Fork.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/Measurement.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/OperationsPerInvocation.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/OutputTimeUnit.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/Threads.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/Warmup.java From heliofrota at gmail.com Fri Aug 9 13:39:49 2013 From: heliofrota at gmail.com (Helio Frota) Date: Fri, 9 Aug 2013 17:39:49 -0300 Subject: hg: code-tools/jmh: Make more class-level annotations @Inherited. In-Reply-To: <20130809194606.2202348764@hg.openjdk.java.net> References: <20130809194606.2202348764@hg.openjdk.java.net> Message-ID: Cool, awesome tool ! 2013/8/9 > Changeset: 2ec65a76bbb8 > Author: shade > Date: 2013-08-09 23:44 +0400 > URL: http://hg.openjdk.java.net/code-tools/jmh/rev/2ec65a76bbb8 > > Make more class-level annotations @Inherited. > > ! jmh-core/src/main/java/org/openjdk/jmh/annotations/BenchmarkMode.java > ! jmh-core/src/main/java/org/openjdk/jmh/annotations/Fork.java > ! jmh-core/src/main/java/org/openjdk/jmh/annotations/Measurement.java > ! > jmh-core/src/main/java/org/openjdk/jmh/annotations/OperationsPerInvocation.java > ! jmh-core/src/main/java/org/openjdk/jmh/annotations/OutputTimeUnit.java > ! jmh-core/src/main/java/org/openjdk/jmh/annotations/Threads.java > ! jmh-core/src/main/java/org/openjdk/jmh/annotations/Warmup.java > > -- Helio Frota JUG Leader - CEJUG http://www.heliofrota.com From aleksey.shipilev at oracle.com Mon Aug 12 08:32:02 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Mon, 12 Aug 2013 15:32:02 +0000 Subject: hg: code-tools/jmh: 3 new changesets Message-ID: <20130812153203.CABA1487C0@hg.openjdk.java.net> Changeset: b12e1c6dcd50 Author: shade Date: 2013-08-12 13:01 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/b12e1c6dcd50 Cleanup: store outputHandler in base runner. ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/ForkedRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java Changeset: ec78e0017c10 Author: shade Date: 2013-08-12 13:12 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/ec78e0017c10 Cleanup: rename outputHandler and all it's usages. ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/ForkedRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/MicroBenchmarkHandlers.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java Changeset: 8349e46230d0 Author: shade Date: 2013-08-12 19:19 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/8349e46230d0 Cleanup: optimize imports. ! jmh-core-benchmarks/src/main/java/org/openjdk/jmh/benchmarks/BlackholeBench.java ! jmh-core-benchmarks/src/main/java/org/openjdk/jmh/benchmarks/DeadCodeBench.java ! jmh-core-benchmarks/src/main/java/org/openjdk/jmh/benchmarks/LevelInvocationBench.java ! jmh-core-benchmarks/src/main/java/org/openjdk/jmh/benchmarks/LevelIterationBench.java ! jmh-core-benchmarks/src/main/java/org/openjdk/jmh/benchmarks/LevelTrialBench.java ! jmh-core-benchmarks/src/main/java/org/openjdk/jmh/benchmarks/NanotimeBench.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/IterationCountCmdTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/SingleShotTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/WarmupIterationCountAnnTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/WarmupIterationCountCmdTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/BlackholeApiTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/GroupLabelTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/MultipleBenchmarkStateTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/MultipleExecGroupStateTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/MultipleGroupStateTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/MultipleThreadStateTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/OperationsPerInvocationTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/StrictFPClassTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/StrictFPMethodTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/blackhole/BlackholeTypesTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/BenchmarkBenchExceptionSignaturesTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/BenchmarkStateExceptionSignaturesTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/GroupBenchExceptionSignaturesTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/GroupStateExceptionSignaturesTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/ThreadBenchExceptionSignaturesTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/ThreadStateExceptionSignaturesTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkBenchTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingForkedBenchTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingForkedSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingForkedTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupBenchTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadBenchTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractBenchmarkBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractBenchmarkBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractBenchmarkStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractBenchmarkStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractGroupBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractGroupBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractGroupStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractGroupStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractThreadBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractThreadBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractThreadStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractThreadStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritBenchmarkBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritBenchmarkBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritBenchmarkStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritBenchmarkStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritGroupBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritGroupBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritGroupStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritGroupStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritThreadBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritThreadBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritThreadStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritThreadStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/AnnotatedClassForkedTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/AnnotatedForkedTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/AnnotatedForkedTest2.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmAppendPrependArgsTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmAppendPrependArgsTest2.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmArgsTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_D_D_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_D_F0_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_D_F1_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_D_F_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F0_D_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F0_F0_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F0_F1_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F0_F_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F1_D_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F1_F0_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F1_F1_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F1_F_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F_D_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F_F0_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F_F1_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F_F_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/BenchmarkBenchOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/BenchmarkStateOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/GroupBenchOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/GroupStateOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/ThreadBenchOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/ThreadStateOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/BenchmarkBenchSetupOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/BenchmarkBenchTearDownOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/BenchmarkStateSetupOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/BenchmarkStateTearDownOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/GroupBenchSetupOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/GroupBenchTearDownOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/GroupStateSetupOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/GroupStateTearDownOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/ThreadBenchSetupOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/ThreadBenchTearDownOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/ThreadStateSetupOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/ThreadStateTearDownOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceBenchmarkStateInvocationTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceBenchmarkStateIterationTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceBenchmarkStateRunTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceGroupStateInvocationTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceGroupStateIterationTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceGroupStateRunTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceThreadStateInvocationTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceThreadStateIterationTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceThreadStateRunTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/BenchmarkBenchSharingTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/BenchmarkStateSharingTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/GroupBenchSharingTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/GroupDefaultBenchSharingTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/GroupDefaultStateSharingTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/GroupStateSharingTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/ThreadBenchSharingTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/ThreadStateSharingTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/synciter/SyncIterMeasurementOnlyTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/BenchmarkBenchSameThreadTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/BenchmarkStateSameThreadTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/GroupBenchSameThreadTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/GroupStateSameThreadTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/ThreadBenchSameThreadTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/ThreadStateSameThreadTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/times/BenchmarkBenchHelperTimesTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/times/BenchmarkStateHelperTimesTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/times/GroupBenchHelperTimesTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/times/GroupStateHelperTimesTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/times/ThreadBenchHelperTimesTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/times/ThreadStateHelperTimesTest.java ! jmh-core/src/main/java/org/openjdk/jmh/ForkedMain.java ! jmh-core/src/main/java/org/openjdk/jmh/processor/internal/GenerateMicroBenchmarkProcessor.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/MicroBenchmarkHandlers.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/HarnessOptions.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParametersFactory.java ! jmh-core/src/main/java/org/openjdk/jmh/util/ClassUtils.java ! jmh-core/src/main/java/org/openjdk/jmh/util/internal/CollectionUtils.java ! jmh-core/src/test/java/org/openjdk/jmh/runner/options/TestOptions.java ! jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_02_BenchmarkModes.java ! jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_07_FixtureLevelInvocation.java ! jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_08_DeadCode.java ! jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_09_Blackholes.java ! jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_10_ConstantFold.java ! jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_11_Loops.java ! jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_12_Forking.java ! jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_13_RunToRun.java ! jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_15_Asymmetric.java ! jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_16_CompilerControl.java ! jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_21_ConsumeCPU.java From aleksey.shipilev at oracle.com Fri Aug 16 00:59:08 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Fri, 16 Aug 2013 07:59:08 +0000 Subject: hg: code-tools/jmh: archetype: force minimal source/target=1.6 for legacy Maven 2 builders. Message-ID: <20130816075908.9E88048924@hg.openjdk.java.net> Changeset: fcd8d6c58998 Author: shade Date: 2013-08-16 11:58 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/fcd8d6c58998 archetype: force minimal source/target=1.6 for legacy Maven 2 builders. ! jmh-simple-benchmark-archetype/src/main/resources/archetype-resources/pom.xml From aleksey.shipilev at oracle.com Fri Aug 16 07:39:43 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Fri, 16 Aug 2013 14:39:43 +0000 Subject: hg: code-tools/jmh: 4 new changesets Message-ID: <20130816143943.DDB6748937@hg.openjdk.java.net> Changeset: 474e029b1134 Author: shade Date: 2013-08-16 17:46 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/474e029b1134 Port bulk warmup integration tests towards @GMB. + jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode0_Test.java + jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode1_Test.java + jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode2_Test.java + jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode3_Test.java + jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode4_Test.java + jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode5_Test.java + jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode6_Test.java + jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode7_Test.java + jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode8_Test.java - jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest0.java - jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest1.java - jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest2.java - jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest3.java - jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest4.java - jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest5.java - jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest6.java - jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest7.java - jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest8.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/Control.java ! jmh-core/src/main/java/org/openjdk/jmh/processor/internal/GenerateMicroBenchmarkProcessor.java Changeset: 810907f82c45 Author: shade Date: 2013-08-16 17:52 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/810907f82c45 Rename a few tests to match JUnit conventions. + jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/AnnotatedForked1_Test.java + jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/AnnotatedForked2_Test.java - jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/AnnotatedForkedTest.java - jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/AnnotatedForkedTest2.java + jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmAppendPrependArgs1_Test.java + jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmAppendPrependArgs2_Test.java - jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmAppendPrependArgsTest.java - jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmAppendPrependArgsTest2.java + jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmArgs1_Test.java + jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmArgs2_Test.java + jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmArgs3_Test.java - jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmArgsTest.java - jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmArgsTest2.java - jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmArgsTest3.java Changeset: 7c137a6d33e4 Author: shade Date: 2013-08-16 18:12 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/7c137a6d33e4 Completely deprecate @MicroBenchmark. JMH will report uses as errors. ! jmh-core/src/main/java/org/openjdk/jmh/annotations/MicroBenchmark.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/Mode.java ! jmh-core/src/main/java/org/openjdk/jmh/processor/internal/GenerateMicroBenchmarkProcessor.java ! jmh-core/src/main/java/org/openjdk/jmh/processor/internal/MicroBenchmarkProcessor.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BenchmarkRecord.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/LoopMicroBenchmarkHandler.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java Changeset: e5450f2db884 Author: shade Date: 2013-08-16 18:39 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/e5450f2db884 Implicit ".*" for benchmark selection from the command line. ! jmh-core/src/main/java/org/openjdk/jmh/Main.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/HarnessOptions.java ! jmh-core/src/test/java/org/openjdk/jmh/TestMain.java From aleksey.shipilev at oracle.com Sat Aug 17 03:08:38 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Sat, 17 Aug 2013 10:08:38 +0000 Subject: hg: code-tools/jmh: 2 new changesets Message-ID: <20130817100839.242494896A@hg.openjdk.java.net> Changeset: 65b09f85aee3 Author: shade Date: 2013-08-17 13:21 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/65b09f85aee3 Merge Global into Loop, simplify Loop interface. - jmh-core/src/main/java/org/openjdk/jmh/logic/Global.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/Loop.java ! jmh-core/src/main/java/org/openjdk/jmh/processor/internal/GenerateMicroBenchmarkProcessor.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/LoopMicroBenchmarkHandler.java - jmh-core/src/test/java/org/openjdk/jmh/logic/TestLoop.java Changeset: c859389d08d6 Author: shade Date: 2013-08-17 14:07 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/c859389d08d6 Rename Loop -> InfraControl. ! jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode6_Test.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/OperationsPerInvocation.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/InfraControl.java < jmh-core/src/main/java/org/openjdk/jmh/logic/Loop.java ! jmh-core/src/main/java/org/openjdk/jmh/processor/internal/GenerateMicroBenchmarkProcessor.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/LoopMicroBenchmarkHandler.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/MicroBenchmarkHandlers.java ! jmh-core/src/test/java/org/openjdk/jmh/runner/options/TestOptions.java From aleksey.shipilev at oracle.com Sat Aug 17 06:52:46 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Sat, 17 Aug 2013 13:52:46 +0000 Subject: hg: code-tools/jmh: 3 new changesets Message-ID: <20130817135247.1E1784896B@hg.openjdk.java.net> Changeset: f321a6407e5a Author: shade Date: 2013-08-17 16:08 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/f321a6407e5a Remove deprecated BenchmarkType. - jmh-core/src/main/java/org/openjdk/jmh/annotations/BenchmarkType.java ! jmh-core/src/main/java/org/openjdk/jmh/annotations/GenerateMicroBenchmark.java ! jmh-core/src/main/java/org/openjdk/jmh/processor/internal/GenerateMicroBenchmarkProcessor.java Changeset: 5719406459e9 Author: shade Date: 2013-08-17 17:06 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/5719406459e9 Purge MicroBenchmark annotation. - jmh-core/src/main/java/org/openjdk/jmh/annotations/MicroBenchmark.java - jmh-core/src/main/java/org/openjdk/jmh/processor/internal/MicroBenchmarkProcessor.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/MicroBenchmarkHandlers.java ! jmh-core/src/main/resources/META-INF/services/javax.annotation.processing.Processor Changeset: 7a748398603b Author: shade Date: 2013-08-17 17:51 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/7a748398603b Fix forked VM failure when -w 0 or -i 0 is supplied. ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/BaseOptions.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/TimeValue.java From aleksey.shipilev at oracle.com Tue Aug 20 11:41:04 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Tue, 20 Aug 2013 18:41:04 +0000 Subject: hg: code-tools/jmh: 2 new changesets Message-ID: <20130820184105.5247F489F4@hg.openjdk.java.net> Changeset: 6cc908c9ba44 Author: shade Date: 2013-08-19 13:20 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/6cc908c9ba44 Cleanup LoopMicroBenchmarkHandler. ! jmh-core/src/main/java/org/openjdk/jmh/logic/InfraControl.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/LoopMicroBenchmarkHandler.java Changeset: dc316f7e2efa Author: shade Date: 2013-08-20 22:40 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/dc316f7e2efa @GMB processor: use Writer instead of OutputStream. Results in massive improvements in benchmark compile times, because now we write with chunks, not with the individual bytes. ! jmh-core/src/main/java/org/openjdk/jmh/processor/internal/GenerateMicroBenchmarkProcessor.java From aleksey.shipilev at oracle.com Wed Aug 21 02:04:57 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Wed, 21 Aug 2013 09:04:57 +0000 Subject: hg: code-tools/jmh: 3 new changesets Message-ID: <20130821090457.DBBC048A35@hg.openjdk.java.net> Changeset: d81474dacdf3 Author: shade Date: 2013-08-21 12:42 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/d81474dacdf3 Add proper hashCode to BenchmarkInfo. (A little more compilation speedup) ! jmh-core/src/main/java/org/openjdk/jmh/processor/internal/BenchmarkInfo.java Changeset: 40356c1dda20 Author: shade Date: 2013-08-21 12:47 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/40356c1dda20 Remove the legacy filters from POM. ! jmh-core-benchmarks/pom.xml ! jmh-core-it/pom.xml ! jmh-samples/pom.xml ! jmh-simple-benchmark-archetype/src/main/resources/archetype-resources/pom.xml Changeset: d1accd77974e Author: shade Date: 2013-08-21 13:04 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/d1accd77974e Make the main JMH thread to set the InfraControl.isDone flag. This spares additional thread per benchmark. ! jmh-core/src/main/java/org/openjdk/jmh/logic/InfraControl.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/LoopMicroBenchmarkHandler.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/TimeValue.java From aleksey.shipilev at oracle.com Wed Aug 21 02:42:55 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Wed, 21 Aug 2013 09:42:55 +0000 Subject: hg: code-tools/jmh: 2 new changesets Message-ID: <20130821094256.3798548A36@hg.openjdk.java.net> Changeset: 9e18c79cb757 Author: shade Date: 2013-08-21 13:38 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/9e18c79cb757 More precise layout checks in both BlackHole and InfraControl. You can't be paranoid enough. ! jmh-core/src/main/java/org/openjdk/jmh/logic/BlackHole.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/InfraControl.java Changeset: d1120166f46c Author: shade Date: 2013-08-21 13:42 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/d1120166f46c Optimize imports. ! jmh-core/src/main/java/org/openjdk/jmh/logic/InfraControl.java ! jmh-core/src/main/java/org/openjdk/jmh/processor/internal/GenerateMicroBenchmarkProcessor.java From aleksey.shipilev at oracle.com Wed Aug 21 10:41:26 2013 From: aleksey.shipilev at oracle.com (Aleksey Shipilev) Date: Wed, 21 Aug 2013 21:41:26 +0400 Subject: RFR: Deprecate -sc, -tc, -otss options Message-ID: <5214FBC6.3090600@oracle.com> Hi, This is the heads up / review request for pending code sweep work. This time, we clean up JMH runners. The runner code was over-patched over the years, and now looks like a fur ball of scaling, thread count, and thread sub-statistics code. We don't see the seasoned users of these options. Also, in the wake of Java API for JMH which will allow to access different benchmark modes via the usual API, these options become the burden we don't see a clear value to support. Please speak up if you think otherwise. Here is the changeset: http://cr.openjdk.java.net/~shade/jmh/deprecate-sc-tc-otss-1.changeset $ diffstat jmh/deprecate-sc-tc-otss-1.changeset > a/jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode7_Test.java | 105 --- > a/jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode8_Test.java | 105 --- > a/jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/ThreadIterationParams.java | 65 -- > b/jmh-core/src/main/java/org/openjdk/jmh/output/format/IterationType.java | 30 + > jmh-core/src/main/java/org/openjdk/jmh/output/format/CsvFormat.java | 22 > jmh-core/src/main/java/org/openjdk/jmh/output/format/OutputFormat.java | 33 - > jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java | 95 +-- > jmh-core/src/main/java/org/openjdk/jmh/output/format/SilentFormat.java | 19 > jmh-core/src/main/java/org/openjdk/jmh/output/format/TextReportFormat.java | 8 > jmh-core/src/main/java/org/openjdk/jmh/runner/BaseMicroBenchmarkHandler.java | 2 > jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java | 288 ++++------ > jmh-core/src/main/java/org/openjdk/jmh/runner/ForkedRunner.java | 12 > jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java | 175 ++---- > jmh-core/src/main/java/org/openjdk/jmh/runner/options/BaseOptions.java | 49 - > jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/IterationParams.java | 20 > jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParameters.java | 19 > jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParametersFactory.java | 281 +-------- > jmh-core/src/test/java/org/openjdk/jmh/runner/options/TestOptions.java | 84 -- > 18 files changed, 319 insertions(+), 1093 deletions(-) Thanks, Aleksey. From sergey.kuksenko at oracle.com Wed Aug 21 11:35:19 2013 From: sergey.kuksenko at oracle.com (Sergey Kuksenko) Date: Wed, 21 Aug 2013 22:35:19 +0400 Subject: RFR: Deprecate -sc, -tc, -otss options In-Reply-To: <5214FBC6.3090600@oracle.com> References: <5214FBC6.3090600@oracle.com> Message-ID: <52150867.6030306@oracle.com> Agreed. I used these options some time ago and realized that they are not convenient for main purpose - scalability measurement. I switched to customs scripts long time ago. And all code around is really awful. On 08/21/2013 09:41 PM, Aleksey Shipilev wrote: > Hi, > > This is the heads up / review request for pending code sweep work. > > This time, we clean up JMH runners. The runner code was over-patched > over the years, and now looks like a fur ball of scaling, thread count, > and thread sub-statistics code. > > We don't see the seasoned users of these options. Also, in the wake of > Java API for JMH which will allow to access different benchmark modes > via the usual API, these options become the burden we don't see a clear > value to support. > > Please speak up if you think otherwise. > > Here is the changeset: > http://cr.openjdk.java.net/~shade/jmh/deprecate-sc-tc-otss-1.changeset > > $ diffstat jmh/deprecate-sc-tc-otss-1.changeset >> a/jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode7_Test.java | 105 --- >> a/jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode8_Test.java | 105 --- >> a/jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/ThreadIterationParams.java | 65 -- >> b/jmh-core/src/main/java/org/openjdk/jmh/output/format/IterationType.java | 30 + >> jmh-core/src/main/java/org/openjdk/jmh/output/format/CsvFormat.java | 22 >> jmh-core/src/main/java/org/openjdk/jmh/output/format/OutputFormat.java | 33 - >> jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java | 95 +-- >> jmh-core/src/main/java/org/openjdk/jmh/output/format/SilentFormat.java | 19 >> jmh-core/src/main/java/org/openjdk/jmh/output/format/TextReportFormat.java | 8 >> jmh-core/src/main/java/org/openjdk/jmh/runner/BaseMicroBenchmarkHandler.java | 2 >> jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java | 288 ++++------ >> jmh-core/src/main/java/org/openjdk/jmh/runner/ForkedRunner.java | 12 >> jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java | 175 ++---- >> jmh-core/src/main/java/org/openjdk/jmh/runner/options/BaseOptions.java | 49 - >> jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/IterationParams.java | 20 >> jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParameters.java | 19 >> jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParametersFactory.java | 281 +-------- >> jmh-core/src/test/java/org/openjdk/jmh/runner/options/TestOptions.java | 84 -- >> 18 files changed, 319 insertions(+), 1093 deletions(-) > > Thanks, > Aleksey. > -- Best regards, Sergey Kuksenko From staffan.friberg at oracle.com Wed Aug 21 11:50:20 2013 From: staffan.friberg at oracle.com (Staffan Friberg) Date: Wed, 21 Aug 2013 11:50:20 -0700 Subject: RFR: Deprecate -sc, -tc, -otss options In-Reply-To: <52150867.6030306@oracle.com> References: <5214FBC6.3090600@oracle.com> <52150867.6030306@oracle.com> Message-ID: <52150BEC.1080900@oracle.com> Hi, Agree that scaling threads was one of the less used features. Would the recommendation for doing scaling tests be? Multiple runs with different thread counts? Built in as part of the microbenchmark? Cheers, Staffan On 2013-08-21 11:35, Sergey Kuksenko wrote: > Agreed. > > I used these options some time ago and realized that they are not > convenient for main purpose - scalability measurement. I switched to > customs scripts long time ago. And all code around is really awful. > > > > On 08/21/2013 09:41 PM, Aleksey Shipilev wrote: >> Hi, >> >> This is the heads up / review request for pending code sweep work. >> >> This time, we clean up JMH runners. The runner code was over-patched >> over the years, and now looks like a fur ball of scaling, thread count, >> and thread sub-statistics code. >> >> We don't see the seasoned users of these options. Also, in the wake of >> Java API for JMH which will allow to access different benchmark modes >> via the usual API, these options become the burden we don't see a clear >> value to support. >> >> Please speak up if you think otherwise. >> >> Here is the changeset: >> http://cr.openjdk.java.net/~shade/jmh/deprecate-sc-tc-otss-1.changeset >> >> $ diffstat jmh/deprecate-sc-tc-otss-1.changeset >>> a/jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode7_Test.java | 105 --- >>> a/jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode8_Test.java | 105 --- >>> a/jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/ThreadIterationParams.java | 65 -- >>> b/jmh-core/src/main/java/org/openjdk/jmh/output/format/IterationType.java | 30 + >>> jmh-core/src/main/java/org/openjdk/jmh/output/format/CsvFormat.java | 22 >>> jmh-core/src/main/java/org/openjdk/jmh/output/format/OutputFormat.java | 33 - >>> jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java | 95 +-- >>> jmh-core/src/main/java/org/openjdk/jmh/output/format/SilentFormat.java | 19 >>> jmh-core/src/main/java/org/openjdk/jmh/output/format/TextReportFormat.java | 8 >>> jmh-core/src/main/java/org/openjdk/jmh/runner/BaseMicroBenchmarkHandler.java | 2 >>> jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java | 288 ++++------ >>> jmh-core/src/main/java/org/openjdk/jmh/runner/ForkedRunner.java | 12 >>> jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java | 175 ++---- >>> jmh-core/src/main/java/org/openjdk/jmh/runner/options/BaseOptions.java | 49 - >>> jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/IterationParams.java | 20 >>> jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParameters.java | 19 >>> jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParametersFactory.java | 281 +-------- >>> jmh-core/src/test/java/org/openjdk/jmh/runner/options/TestOptions.java | 84 -- >>> 18 files changed, 319 insertions(+), 1093 deletions(-) >> Thanks, >> Aleksey. >> > From aleksey.shipilev at oracle.com Wed Aug 21 12:01:31 2013 From: aleksey.shipilev at oracle.com (Aleksey Shipilev) Date: Wed, 21 Aug 2013 23:01:31 +0400 Subject: RFR: Deprecate -sc, -tc, -otss options In-Reply-To: <52150BEC.1080900@oracle.com> References: <5214FBC6.3090600@oracle.com> <52150867.6030306@oracle.com> <52150BEC.1080900@oracle.com> Message-ID: <52150E8B.3060300@oracle.com> On 08/21/2013 10:50 PM, Staffan Friberg wrote: > Would the recommendation for doing scaling tests be? > Multiple runs with different thread counts? > Built in as part of the microbenchmark? Both are good. We normally prefer to shell-script multiple JMH experiments with different command line options, fitting the output to different output files. With the Java API it should be easy to make the multiple runs along with the preprocessing with the help of custom Java/etc script. -Aleksey. From sergey.kuksenko at oracle.com Wed Aug 21 12:07:42 2013 From: sergey.kuksenko at oracle.com (Sergey Kuksenko) Date: Wed, 21 Aug 2013 23:07:42 +0400 Subject: RFR: Deprecate -sc, -tc, -otss options In-Reply-To: <52150BEC.1080900@oracle.com> References: <5214FBC6.3090600@oracle.com> <52150867.6030306@oracle.com> <52150BEC.1080900@oracle.com> Message-ID: <52150FFE.807@oracle.com> On 08/21/2013 10:50 PM, Staffan Friberg wrote: > Hi, > > Agree that scaling threads was one of the less used features. > > Would the recommendation for doing scaling tests be? > Multiple runs with different thread counts? I am using this version. Plans for Java API should give us full flexibility here in future. > Built in as part of the microbenchmark? It is hard to built in. Too much parameters (HW dependent) to choose proper scaling scheme. > > Cheers, > Staffan > > On 2013-08-21 11:35, Sergey Kuksenko wrote: >> Agreed. >> >> I used these options some time ago and realized that they are not >> convenient for main purpose - scalability measurement. I switched to >> customs scripts long time ago. And all code around is really awful. >> >> >> >> On 08/21/2013 09:41 PM, Aleksey Shipilev wrote: >>> Hi, >>> >>> This is the heads up / review request for pending code sweep work. >>> >>> This time, we clean up JMH runners. The runner code was over-patched >>> over the years, and now looks like a fur ball of scaling, thread count, >>> and thread sub-statistics code. >>> >>> We don't see the seasoned users of these options. Also, in the wake of >>> Java API for JMH which will allow to access different benchmark modes >>> via the usual API, these options become the burden we don't see a clear >>> value to support. >>> >>> Please speak up if you think otherwise. >>> >>> Here is the changeset: >>> >>> http://cr.openjdk.java.net/~shade/jmh/deprecate-sc-tc-otss-1.changeset >>> -- Best regards, Sergey Kuksenko From aleksey.shipilev at oracle.com Wed Aug 21 12:10:26 2013 From: aleksey.shipilev at oracle.com (Aleksey Shipilev) Date: Wed, 21 Aug 2013 23:10:26 +0400 Subject: RFR: Deprecate -sc, -tc, -otss options In-Reply-To: <5214FBC6.3090600@oracle.com> References: <5214FBC6.3090600@oracle.com> Message-ID: <521510A2.5090609@oracle.com> On 08/21/2013 09:41 PM, Aleksey Shipilev wrote: > Here is the changeset: > http://cr.openjdk.java.net/~shade/jmh/deprecate-sc-tc-otss-1.changeset Webrev should be more useful to review: http://cr.openjdk.java.net/~shade/jmh/deprecate-sc-tc-otss-1.webrev/ -Aleksey. From aleksey.shipilev at oracle.com Fri Aug 23 01:37:42 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Fri, 23 Aug 2013 08:37:42 +0000 Subject: hg: code-tools/jmh: 10 new changesets Message-ID: <20130823083744.7221B48AEE@hg.openjdk.java.net> Changeset: 354a59456647 Author: shade Date: 2013-08-21 20:18 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/354a59456647 Remove obsolete -tc, -sc, -otss options. - jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode7_Test.java - jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode8_Test.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/CsvFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseMicroBenchmarkHandler.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/BaseOptions.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParameters.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParametersFactory.java ! jmh-core/src/test/java/org/openjdk/jmh/runner/options/TestOptions.java Changeset: 50aebd311a4c Author: shade Date: 2013-08-21 20:24 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/50aebd311a4c Purge OutputFormat.threadSubStatistics(). ! jmh-core/src/main/java/org/openjdk/jmh/output/format/CsvFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/OutputFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/SilentFormat.java Changeset: 59b8ba356d64 Author: shade Date: 2013-08-21 20:25 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/59b8ba356d64 Minor inline in ForkedRunner. ! jmh-core/src/main/java/org/openjdk/jmh/runner/ForkedRunner.java Changeset: ced67a356973 Author: shade Date: 2013-08-21 20:39 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/ced67a356973 Fold OutputFormat.warmupIteration into OutputFormat.iteration ! jmh-core/src/main/java/org/openjdk/jmh/output/format/CsvFormat.java + jmh-core/src/main/java/org/openjdk/jmh/output/format/IterationType.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/OutputFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/SilentFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/TextReportFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java Changeset: e908157a6c14 Author: shade Date: 2013-08-21 20:54 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/e908157a6c14 IterationParams to take the threads as well. ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/IterationParams.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParameters.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParametersFactory.java - jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/ThreadIterationParams.java Changeset: 3b358eae06de Author: shade Date: 2013-08-21 21:17 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/3b358eae06de Fold bulk warmup, classic, and forked runs into the same invoker. ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/ForkedRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParameters.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParametersFactory.java Changeset: 309279f710b7 Author: shade Date: 2013-08-21 21:26 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/309279f710b7 Always shutdown microbenchmark handler. ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java Changeset: 7ba43108f829 Author: shade Date: 2013-08-23 12:16 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/7ba43108f829 Enforce OutputFormat,{start|end}Run contract. ! jmh-core/src/main/java/org/openjdk/jmh/output/format/CsvFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/OutputFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/SilentFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/TextReportFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/ForkedRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java Changeset: 0cea178f3eb4 Author: shade Date: 2013-08-23 12:18 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/0cea178f3eb4 Fixing the formatter regression: should not print double result on measurement iterations. ! jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java Changeset: f357993710a8 Author: shade Date: 2013-08-23 12:32 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/f357993710a8 Remove ExecutionMode, make the dispatch cleaner. ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/HarnessOptions.java From aleksey.shipilev at oracle.com Fri Aug 23 02:06:59 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Fri, 23 Aug 2013 09:06:59 +0000 Subject: hg: code-tools/jmh: Cleanup Runner. Message-ID: <20130823090659.90E3C48AF3@hg.openjdk.java.net> Changeset: b3932d6c6377 Author: shade Date: 2013-08-23 13:06 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/b3932d6c6377 Cleanup Runner. ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java + jmh-core/src/main/java/org/openjdk/jmh/util/Utils.java From aleksey.shipilev at oracle.com Fri Aug 23 03:41:54 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Fri, 23 Aug 2013 10:41:54 +0000 Subject: hg: code-tools/jmh: 2 new changesets Message-ID: <20130823104155.0D51148AF8@hg.openjdk.java.net> Changeset: 18ce82926141 Author: shade Date: 2013-08-23 13:53 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/18ce82926141 Point-wise rename in RunResult. ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/internal/RunResult.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java Changeset: 9e8f44e958d3 Author: shade Date: 2013-08-23 14:34 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/9e8f44e958d3 Fold MicrobenchmarkList into Runner internal. ! jmh-core/src/main/java/org/openjdk/jmh/Main.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java From aleksey.shipilev at oracle.com Tue Aug 27 08:06:21 2013 From: aleksey.shipilev at oracle.com (Aleksey Shipilev) Date: Tue, 27 Aug 2013 19:06:21 +0400 Subject: RFR: Options rework Message-ID: <521CC06D.7080205@oracle.com> Hi, This is one of many changes towards the JMH API. This time, we revisit our Options. At this point, we have very strong ties to arg4j to parse the command line options. We also have two separate option versions, one accepted by the host (harness) VM, and the second one by the forked VMs. We translate the former to later for the forked runs, and that costs us lots of scaffolding. All this complicates the code significantly: making custom Options is the error-prone and messy endeavor. The cleanup is in this webrev: http://cr.openjdk.java.net/~shade/jmh/options-rework-1.webrev/ High-level view: - extracted Options interface; JMH core is now oblivious of the exact Options implementation - forked VM uses the binary link (already established for pulling the data back from the forked VM) to pull the options from the host VM; forked VM does not use any complex argument parsing anymore - various API touchups - sample API demo to demonstrate the OptionsBuilder The normal use should not be affected, the changes are mostly undercover. Please review! Thanks, -Aleksey. From sergey.kuksenko at oracle.com Wed Aug 28 02:49:16 2013 From: sergey.kuksenko at oracle.com (Sergey Kuksenko) Date: Wed, 28 Aug 2013 13:49:16 +0400 Subject: RFR: Options rework In-Reply-To: <521CC06D.7080205@oracle.com> References: <521CC06D.7080205@oracle.com> Message-ID: <521DC79C.90709@oracle.com> Reviewed! Accepted the changeset. Minor comments are below (related to the mail, not to the changeset). On 08/27/2013 07:06 PM, Aleksey Shipilev wrote: > Hi, > > This is one of many changes towards the JMH API. This time, we revisit > our Options. At this point, we have very strong ties to arg4j to parse I strongly vote for killing arg4j dependency in the future (hard to maintain). > the command line options. We also have two separate option versions, one > accepted by the host (harness) VM, and the second one by the forked VMs. > We translate the former to later for the forked runs, and that costs us > lots of scaffolding. > > All this complicates the code significantly: making custom Options is > the error-prone and messy endeavor. > > The cleanup is in this webrev: > http://cr.openjdk.java.net/~shade/jmh/options-rework-1.webrev/ > > High-level view: > - extracted Options interface; JMH core is now oblivious of the exact > Options implementation > - forked VM uses the binary link (already established for pulling the > data back from the forked VM) to pull the options from the host VM; > forked VM does not use any complex argument parsing anymore that is cool. > - various API touchups > - sample API demo to demonstrate the OptionsBuilder > > The normal use should not be affected, the changes are mostly > undercover. Please review! > > Thanks, > -Aleksey. > -- Best regards, Sergey Kuksenko From aleksey.shipilev at oracle.com Wed Aug 28 03:20:46 2013 From: aleksey.shipilev at oracle.com (Aleksey Shipilev) Date: Wed, 28 Aug 2013 14:20:46 +0400 Subject: RFR: Options rework In-Reply-To: <521DC79C.90709@oracle.com> References: <521CC06D.7080205@oracle.com> <521DC79C.90709@oracle.com> Message-ID: <521DCEFE.90700@oracle.com> On 08/28/2013 01:49 PM, Sergey Kuksenko wrote: > Reviewed! Accepted the changeset. Thank you. I will push shortly. > I strongly vote for killing arg4j dependency in the future (hard to > maintain). With this change, the ties to args4j are superficial enough to consider this. However, it "just works" now :) -Aleksey. From aleksey.shipilev at oracle.com Wed Aug 28 05:09:07 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Wed, 28 Aug 2013 12:09:07 +0000 Subject: hg: code-tools/jmh: 15 new changesets Message-ID: <20130828120909.D58DB48C25@hg.openjdk.java.net> Changeset: 197a3dcf3c1f Author: shade Date: 2013-08-23 16:44 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/197a3dcf3c1f Experimental: Simple API sample. + jmh-api-samples/pom.xml + jmh-api-samples/src/main/java/org/openjdk/jmh/SimpleTest.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java ! pom.xml Changeset: 17b018e40f33 Author: shade Date: 2013-08-23 18:00 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/17b018e40f33 Deprecate and remove -tl (trace level) option. ! jmh-core/src/main/java/org/openjdk/jmh/output/OutputFormatFactory.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/BaseOptions.java Changeset: ad7c8952983b Author: shade Date: 2013-08-26 18:45 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/ad7c8952983b Split out Options interface. + jmh-api-samples/src/main/java/org/openjdk/jmh/MyAPIBench.java ! jmh-api-samples/src/main/java/org/openjdk/jmh/SimpleTest.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseMicroBenchmarkHandler.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/ForkedRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/LoopMicroBenchmarkHandler.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/MicroBenchmarkHandlers.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/BaseOptions.java + jmh-core/src/main/java/org/openjdk/jmh/runner/options/DefaultBuilder.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/ForkedOptions.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/HarnessOptions.java + jmh-core/src/main/java/org/openjdk/jmh/runner/options/Options.java + jmh-core/src/main/java/org/openjdk/jmh/runner/options/OptionsBuilder.java + jmh-core/src/main/java/org/openjdk/jmh/runner/options/WarmupMode.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParametersFactory.java ! jmh-core/src/main/java/org/openjdk/jmh/util/Utils.java Changeset: 917ec73e859d Author: shade Date: 2013-08-27 12:49 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/917ec73e859d Remove unnecessary TODO. ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/Options.java Changeset: 86d787cc5309 Author: shade Date: 2013-08-27 13:09 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/86d787cc5309 Defaults for WarmupMode. ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/HarnessOptions.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/Options.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/WarmupMode.java Changeset: f8d3b5ff18ee Author: shade Date: 2013-08-27 14:05 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/f8d3b5ff18ee Extract ProfilerType. ! jmh-core/src/main/java/org/openjdk/jmh/profile/ProfilerFactory.java + jmh-core/src/main/java/org/openjdk/jmh/profile/ProfilerType.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseMicroBenchmarkHandler.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/BaseOptions.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/DefaultBuilder.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/Options.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/OptionsBuilder.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/handlers/ProfilersOptionHandler.java Changeset: ca8d6876f031 Author: shade Date: 2013-08-27 14:35 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/ca8d6876f031 Move out Options.shouldList(). ! jmh-core/src/main/java/org/openjdk/jmh/Main.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/DefaultBuilder.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/ForkedOptions.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/HarnessOptions.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/Options.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/OptionsBuilder.java Changeset: 9b447ea48fa3 Author: shade Date: 2013-08-27 14:39 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/9b447ea48fa3 Prune OutputFormatType interface. ! jmh-core/src/main/java/org/openjdk/jmh/output/OutputFormatType.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/DefaultBuilder.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/HarnessOptions.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/Options.java Changeset: a3aef9af97ce Author: shade Date: 2013-08-27 17:43 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/a3aef9af97ce Use bi-directional binary link to propagate Options instead of marshalling them back to command line. ! jmh-api-samples/src/main/java/org/openjdk/jmh/SimpleTest.java ! jmh-core/src/main/java/org/openjdk/jmh/ForkedMain.java ! jmh-core/src/main/java/org/openjdk/jmh/Main.java + jmh-core/src/main/java/org/openjdk/jmh/link/BinaryLinkClient.java + jmh-core/src/main/java/org/openjdk/jmh/link/BinaryLinkServer.java + jmh-core/src/main/java/org/openjdk/jmh/link/CallInfo.java + jmh-core/src/main/java/org/openjdk/jmh/link/ClassConventions.java + jmh-core/src/main/java/org/openjdk/jmh/link/InfraRequest.java + jmh-core/src/main/java/org/openjdk/jmh/link/OptionsReply.java ! jmh-core/src/main/java/org/openjdk/jmh/output/OutputFormatFactory.java - jmh-core/src/main/java/org/openjdk/jmh/output/format/internal/BinaryOutputFormatReader.java - jmh-core/src/main/java/org/openjdk/jmh/output/format/internal/BinaryOutputFormatWriter.java - jmh-core/src/main/java/org/openjdk/jmh/output/format/internal/CallInfo.java - jmh-core/src/main/java/org/openjdk/jmh/output/format/internal/ClassConventions.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BenchmarkRecord.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/ForkedRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java - jmh-core/src/main/java/org/openjdk/jmh/runner/options/BaseOptions.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/CommandLineOptions.java < jmh-core/src/main/java/org/openjdk/jmh/runner/options/HarnessOptions.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/DefaultBuilder.java - jmh-core/src/main/java/org/openjdk/jmh/runner/options/ForkedOptions.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/Options.java ! jmh-core/src/test/java/org/openjdk/jmh/runner/options/TestOptions.java Changeset: 81c3deb0f69f Author: shade Date: 2013-08-27 17:59 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/81c3deb0f69f Cleanup binary link. ! jmh-core/src/main/java/org/openjdk/jmh/ForkedMain.java ! jmh-core/src/main/java/org/openjdk/jmh/link/BinaryLinkClient.java ! jmh-core/src/main/java/org/openjdk/jmh/link/BinaryLinkServer.java + jmh-core/src/main/java/org/openjdk/jmh/link/frames/FinishingFrame.java ! jmh-core/src/main/java/org/openjdk/jmh/link/frames/InfraFrame.java < jmh-core/src/main/java/org/openjdk/jmh/link/InfraRequest.java ! jmh-core/src/main/java/org/openjdk/jmh/link/frames/OptionsFrame.java < jmh-core/src/main/java/org/openjdk/jmh/link/OptionsReply.java ! jmh-core/src/main/java/org/openjdk/jmh/link/frames/OutputFormatFrame.java < jmh-core/src/main/java/org/openjdk/jmh/link/CallInfo.java ! jmh-core/src/main/java/org/openjdk/jmh/output/OutputFormatFactory.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java Changeset: 9b7bbf28d685 Author: shade Date: 2013-08-27 18:53 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/9b7bbf28d685 Touchups to the API. ! jmh-api-samples/src/main/java/org/openjdk/jmh/SimpleTest.java + jmh-core/src/main/java/org/openjdk/jmh/runner/options/ChainedOptionsBuilder.java - jmh-core/src/main/java/org/openjdk/jmh/runner/options/DefaultBuilder.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/options/OptionsBuilder.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/TimeValue.java Changeset: 2621152f8474 Author: shade Date: 2013-08-27 20:29 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/2621152f8474 Prune redundant Option fields. ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/ForkedRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java Changeset: b6cfcb9b53a6 Author: shade Date: 2013-08-28 15:45 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/b6cfcb9b53a6 MIrror integration tests with API-enabled variants. ! jmh-core-it/src/test/java/org/openjdk/jmh/it/IterationCountAnnTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/IterationCountCmdTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/SingleShotTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/WarmupIterationCountAnnTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/WarmupIterationCountCmdTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode0_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode1_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode2_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode3_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode4_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode5_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/bulkwarmup/WarmupMode6_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/ccontrol/CompilerControlDontInlineTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/ccontrol/CompilerControlExcludeTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/ccontrol/CompilerControlInlineTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkBenchTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingForkedBenchTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingForkedSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingForkedTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupBenchTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadBenchTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractBenchmarkBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractBenchmarkBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractBenchmarkStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractBenchmarkStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractGroupBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractGroupBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractGroupStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractGroupStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractThreadBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractThreadBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractThreadStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractThreadStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritBenchmarkBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritBenchmarkBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritBenchmarkStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritBenchmarkStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritGroupBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritGroupBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritGroupStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritGroupStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritThreadBenchSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritThreadBenchTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritThreadStateSetupTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritThreadStateTearDownTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/AnnotatedClassForkedTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/AnnotatedForked1_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/AnnotatedForked2_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmAppendPrependArgs1_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmAppendPrependArgs2_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmArgs1_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmArgs2_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmArgs3_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_D_D_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_D_F0_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_D_F1_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_D_F_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F0_D_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F0_F0_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F0_F1_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F0_F_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F1_D_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F1_F0_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F1_F1_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F1_F_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F_D_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F_F0_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F_F1_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F_F_Test.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/BenchmarkBenchOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/BenchmarkStateOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/GroupBenchOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/GroupStateOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/ThreadBenchOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/ThreadStateOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/BenchmarkBenchSetupOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/BenchmarkBenchTearDownOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/BenchmarkStateSetupOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/BenchmarkStateTearDownOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/GroupBenchSetupOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/GroupBenchTearDownOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/GroupStateSetupOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/GroupStateTearDownOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/ThreadBenchSetupOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/ThreadBenchTearDownOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/ThreadStateSetupOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/ThreadStateTearDownOrderTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceBenchmarkStateInvocationTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceBenchmarkStateIterationTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceBenchmarkStateRunTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceGroupStateInvocationTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceGroupStateIterationTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceGroupStateRunTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceThreadStateInvocationTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceThreadStateIterationTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceThreadStateRunTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/BenchmarkBenchSharingTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/BenchmarkStateSharingTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/GroupBenchSharingTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/GroupDefaultBenchSharingTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/GroupDefaultStateSharingTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/GroupStateSharingTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/ThreadBenchSharingTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/ThreadStateSharingTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/synciter/SyncIterMeasurementOnlyTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/synciter/SyncIterNotOnlyMeasurementTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/BenchmarkBenchSameThreadTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/BenchmarkStateSameThreadTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/GroupBenchSameThreadTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/GroupStateSameThreadTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/OneThreadCountTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/ThreadBenchSameThreadTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/ThreadStateSameThreadTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/TwoThreadCountTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/ZeroThreadCountTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/times/BenchmarkBenchHelperTimesTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/times/BenchmarkStateHelperTimesTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/times/GroupBenchHelperTimesTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/times/GroupStateHelperTimesTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/times/ThreadBenchHelperTimesTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/times/ThreadStateHelperTimesTest.java Changeset: c84f78395242 Author: shade Date: 2013-08-28 15:49 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/c84f78395242 More parallelism in integration tests. ! jmh-core-it/pom.xml Changeset: a9eec858c97b Author: shade Date: 2013-08-28 16:03 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/a9eec858c97b More effective integration tests. ! jmh-core-it/src/test/java/org/openjdk/jmh/it/Fixtures.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/OneThreadCountTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/TwoThreadCountTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/ZeroThreadCountTest.java From aleksey.shipilev at oracle.com Thu Aug 29 12:09:26 2013 From: aleksey.shipilev at oracle.com (Aleksey Shipilev) Date: Thu, 29 Aug 2013 23:09:26 +0400 Subject: RFR: Rework Results API Message-ID: <521F9C66.7060201@oracle.com> 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. From staffan.friberg at oracle.com Thu Aug 29 12:26:52 2013 From: staffan.friberg at oracle.com (Staffan Friberg) Date: Thu, 29 Aug 2013 12:26:52 -0700 Subject: RFR: Rework Results API In-Reply-To: <521F9C66.7060201@oracle.com> References: <521F9C66.7060201@oracle.com> Message-ID: <521FA07C.2080003@oracle.com> Would it make sense to have a class that handles the result unit so you can ask if lower or higher result is better etc. instead of forcing the user to parse a String? Once you integrate into a higher (or automatic) system know which is the better score becomes important. //Staffan On 2013-08-29 12:09, 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. From mike.duigou at oracle.com Thu Aug 29 12:30:09 2013 From: mike.duigou at oracle.com (Mike Duigou) Date: Thu, 29 Aug 2013 12:30:09 -0700 Subject: RFR: Options rework In-Reply-To: <521DCEFE.90700@oracle.com> References: <521CC06D.7080205@oracle.com> <521DC79C.90709@oracle.com> <521DCEFE.90700@oracle.com> Message-ID: <6151799D-0552-4F90-AA84-18B8F909DB25@oracle.com> On Aug 28 2013, at 03:20 , Aleksey Shipilev wrote: > On 08/28/2013 01:49 PM, Sergey Kuksenko wrote: >> Reviewed! Accepted the changeset. > > Thank you. I will push shortly. > >> I strongly vote for killing arg4j dependency in the future (hard to >> maintain). > > With this change, the ties to args4j are superficial enough to consider > this. However, it "just works" now :) You may want to consider joptsimple [1] which is used elsewhere in the JDK. Referenced this morning in [2]. The NetBeans options parser mentioned in [3] might also be practical. [1] http://pholser.github.io/jopt-simple/ [2] http://mail.openjdk.java.net/pipermail/jigsaw-dev/2013-August/003335.html [3] http://mail.openjdk.java.net/pipermail/jigsaw-dev/2013-August/003333.html Mike From aleksey.shipilev at oracle.com Thu Aug 29 12:35:49 2013 From: aleksey.shipilev at oracle.com (Aleksey Shipilev) Date: Thu, 29 Aug 2013 23:35:49 +0400 Subject: RFR: Options rework In-Reply-To: <6151799D-0552-4F90-AA84-18B8F909DB25@oracle.com> References: <521CC06D.7080205@oracle.com> <521DC79C.90709@oracle.com> <521DCEFE.90700@oracle.com> <6151799D-0552-4F90-AA84-18B8F909DB25@oracle.com> Message-ID: <521FA295.6070104@oracle.com> On 08/29/2013 11:30 PM, Mike Duigou wrote: > You may want to consider joptsimple [1] which is used elsewhere in > the JDK. Referenced this morning in [2]. The NetBeans options parser > mentioned in [3] might also be practical. Thanks Mike. That's on the table. :) -Aleksey. From aleksey.shipilev at oracle.com Thu Aug 29 12:41:30 2013 From: aleksey.shipilev at oracle.com (Aleksey Shipilev) Date: Thu, 29 Aug 2013 23:41:30 +0400 Subject: RFR: Rework Results API In-Reply-To: <521FA07C.2080003@oracle.com> References: <521F9C66.7060201@oracle.com> <521FA07C.2080003@oracle.com> Message-ID: <521FA3EA.3000804@oracle.com> On 08/29/2013 11:26 PM, Staffan Friberg wrote: > Would it make sense to have a class that handles the result unit so you > can ask if lower or higher result is better etc. instead of forcing the > user to parse a String? Seems so. Since this is non-essential at this point, I will probably do this in another changeset. -Aleksey. From staffan.friberg at oracle.com Thu Aug 29 13:47:42 2013 From: staffan.friberg at oracle.com (Staffan Friberg) Date: Thu, 29 Aug 2013 13:47:42 -0700 Subject: RFR: Rework Results API In-Reply-To: <521FA3EA.3000804@oracle.com> References: <521F9C66.7060201@oracle.com> <521FA07C.2080003@oracle.com> <521FA3EA.3000804@oracle.com> Message-ID: <521FB36E.5050400@oracle.com> Agree, not critical for this change set, but as it evolves further I think it would be good to change. On 2013-08-29 12:41, Aleksey Shipilev wrote: > On 08/29/2013 11:26 PM, Staffan Friberg wrote: >> Would it make sense to have a class that handles the result unit so you >> can ask if lower or higher result is better etc. instead of forcing the >> user to parse a String? > Seems so. Since this is non-essential at this point, I will probably do > this in another changeset. > > -Aleksey. > From sergey.kuksenko at oracle.com Fri Aug 30 01:13:28 2013 From: sergey.kuksenko at oracle.com (Sergey Kuksenko) Date: Fri, 30 Aug 2013 12:13:28 +0400 Subject: RFR: Rework Results API In-Reply-To: <521F9C66.7060201@oracle.com> References: <521F9C66.7060201@oracle.com> Message-ID: <52205428.6030300@oracle.com> 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 From aleksey.shipilev at oracle.com Fri Aug 30 01:16:21 2013 From: aleksey.shipilev at oracle.com (Aleksey Shipilev) Date: Fri, 30 Aug 2013 12:16:21 +0400 Subject: RFR: Rework Results API In-Reply-To: <52205428.6030300@oracle.com> References: <521F9C66.7060201@oracle.com> <52205428.6030300@oracle.com> Message-ID: <522054D5.6090401@oracle.com> Thank you. I'll test a bit more, and push later today. -Aleksey. On 08/30/2013 12:13 PM, Sergey Kuksenko wrote: > 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. >> > > From aleksey.shipilev at oracle.com Fri Aug 30 01:24:48 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Fri, 30 Aug 2013 08:24:48 +0000 Subject: hg: code-tools/jmh: 13 new changesets Message-ID: <20130830082450.7FC326240F@hg.openjdk.java.net> Changeset: 8ee765583a16 Author: shade Date: 2013-08-28 18:43 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/8ee765583a16 First experimental slack on API returning results. ! jmh-api-samples/src/main/java/org/openjdk/jmh/MyAPIBench.java ! jmh-api-samples/src/main/java/org/openjdk/jmh/SimpleTest.java ! jmh-core/src/main/java/org/openjdk/jmh/link/BinaryLinkClient.java ! jmh-core/src/main/java/org/openjdk/jmh/link/BinaryLinkServer.java + jmh-core/src/main/java/org/openjdk/jmh/link/frames/ResultsFrame.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/ForkedRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java Changeset: ee135e6ab5c0 Author: shade Date: 2013-08-29 16:49 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/ee135e6ab5c0 Cleanup IterationData. ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/IterationData.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/LoopMicroBenchmarkHandler.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/MicroBenchmarkHandler.java Changeset: 511a26839ce9 Author: shade Date: 2013-08-29 16:59 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/511a26839ce9 Cleanup MicrobenchmarkParameters -> BenchmarkParams. ! jmh-core/src/main/java/org/openjdk/jmh/output/format/CsvFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/OutputFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/SilentFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/TextReportFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseMicroBenchmarkHandler.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/LoopMicroBenchmarkHandler.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/MicroBenchmarkHandlers.java + jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/BenchmarkParams.java - jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParameters.java - jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParametersFactory.java Changeset: f75b8c3a1ded Author: shade Date: 2013-08-29 17:31 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/f75b8c3a1ded Another touchup in OutputFormat interface. ! jmh-core/src/main/java/org/openjdk/jmh/output/format/CsvFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/OutputFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/SilentFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/TextReportFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java Changeset: 73c3a6c35b9e Author: shade Date: 2013-08-29 18:41 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/73c3a6c35b9e Merging IterationResult into IterationData, phase 1. ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/AverageTimePerOp.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/IterationData.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/OpsPerTimeUnit.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/SampleTimePerOp.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/SingleShotTime.java - jmh-core/src/main/java/org/openjdk/jmh/logic/results/internal/IterationResult.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/CsvFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/OutputFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/SilentFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/TextReportFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java ! jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestAggregateResult.java Changeset: 215073a11ca8 Author: shade Date: 2013-08-29 19:24 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/215073a11ca8 Merging IterationResult into IterationData, phase 2. ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/AverageTimePerOp.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/IterationData.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/OpsPerTimeUnit.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/Result.java + jmh-core/src/main/java/org/openjdk/jmh/logic/results/ResultRole.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/SampleTimePerOp.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/SingleShotTime.java ! jmh-core/src/main/java/org/openjdk/jmh/processor/internal/GenerateMicroBenchmarkProcessor.java ! jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestAggregateResult.java ! jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestAverageTimePerOp.java ! jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestOpsPerTimeUnit.java ! jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestSampleTimePerOp.java ! jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestSingleShotTime.java Changeset: ca3102a6f220 Author: shade Date: 2013-08-29 20:20 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/ca3102a6f220 Print secondary results in OutputFormat. ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/IterationData.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/CsvFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/TextReportFormat.java Changeset: e0d0ab023d09 Author: shade Date: 2013-08-29 22:11 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/e0d0ab023d09 Massive RunResult/IterationData interface cleanups. ! jmh-api-samples/src/main/java/org/openjdk/jmh/SimpleTest.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/IterationResult.java < jmh-core/src/main/java/org/openjdk/jmh/logic/results/IterationData.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/Result.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/SampleTimePerOp.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/internal/RunResult.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/CsvFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/OutputFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/SilentFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/TextReportFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseMicroBenchmarkHandler.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/LoopMicroBenchmarkHandler.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/MicroBenchmarkHandler.java ! jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestAggregateResult.java Changeset: 5c681b07b50a Author: shade Date: 2013-08-29 22:25 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/5c681b07b50a Properly merge the RunResults in the Runners. ! jmh-api-samples/src/main/java/org/openjdk/jmh/SimpleTest.java ! jmh-core/src/main/java/org/openjdk/jmh/link/BinaryLinkServer.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/internal/RunResult.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java ! jmh-core/src/main/java/org/openjdk/jmh/util/internal/Statistics.java ! jmh-core/src/test/java/org/openjdk/jmh/util/TestStatistics.java Changeset: ea6a8e0d0efc Author: shade Date: 2013-08-29 22:38 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/ea6a8e0d0efc Shortcut API for single benchmark execution in Runner. ! jmh-api-samples/src/main/java/org/openjdk/jmh/SimpleTest.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java Changeset: 5e7437c54403 Author: shade Date: 2013-08-29 22:48 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/5e7437c54403 Prune RunResult statistics in favor of Result-s statistics. ! jmh-api-samples/src/main/java/org/openjdk/jmh/SimpleTest.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/internal/RunResult.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/TextReportFormat.java Changeset: 48fd68662be4 Author: shade Date: 2013-08-29 22:55 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/48fd68662be4 Cleanup ResultRole. ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/AverageTimePerOp.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/IterationResult.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/OpsPerTimeUnit.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/Result.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/ResultRole.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/SingleShotTime.java Changeset: dee7edd4c824 Author: shade Date: 2013-08-30 12:23 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/dee7edd4c824 Reuse RunResult.merge in PrettyPrintFormat. ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/internal/RunResult.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java From aleksey.shipilev at oracle.com Fri Aug 30 01:26:17 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Fri, 30 Aug 2013 08:26:17 +0000 Subject: hg: code-tools/jmh: Move RunResult into the public package. Message-ID: <20130830082617.87E1C62410@hg.openjdk.java.net> Changeset: df993bf0254c Author: shade Date: 2013-08-30 12:26 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/df993bf0254c Move RunResult into the public package. ! jmh-api-samples/src/main/java/org/openjdk/jmh/SimpleTest.java ! jmh-core/src/main/java/org/openjdk/jmh/link/BinaryLinkClient.java ! jmh-core/src/main/java/org/openjdk/jmh/link/BinaryLinkServer.java ! jmh-core/src/main/java/org/openjdk/jmh/link/frames/ResultsFrame.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/RunResult.java < jmh-core/src/main/java/org/openjdk/jmh/logic/results/internal/RunResult.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/CsvFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/OutputFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/SilentFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/TextReportFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/ForkedRunner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java From aleksey.shipilev at oracle.com Fri Aug 30 01:53:59 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Fri, 30 Aug 2013 08:53:59 +0000 Subject: hg: code-tools/jmh: Optimize imports. Message-ID: <20130830085400.936F962411@hg.openjdk.java.net> Changeset: 22d270744285 Author: shade Date: 2013-08-30 12:38 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/22d270744285 Optimize imports. ! jmh-api-samples/src/main/java/org/openjdk/jmh/SimpleTest.java ! jmh-core-it/src/test/java/org/openjdk/jmh/it/ccontrol/CompilerControlDontInlineTest.java ! jmh-core/src/main/java/org/openjdk/jmh/output/OutputFormatFactory.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java ! jmh-core/src/test/java/org/openjdk/jmh/runner/options/TestOptions.java From aleksey.shipilev at oracle.com Fri Aug 30 02:15:11 2013 From: aleksey.shipilev at oracle.com (Aleksey Shipilev) Date: Fri, 30 Aug 2013 13:15:11 +0400 Subject: RFR: Cleaning up human-readable output Message-ID: <5220629F.4050404@oracle.com> Hi, The human-readable output seems to be overloaded with the info. Let's prune it! I have the change which transforms the output like this: ------------------ 8< ------------------------------------------------ # Runtime (per iteration): 100ms # Iterations: 5 # Thread count: 1 # Threads will synchronize iterations # Benchmark mode: Throughput, ops/time # Running: org.openjdk.jmh.samples.JMHSample_01_HelloWorld.hello # Warmup Iteration 1 (100ms in 1 thread): 0.634 ops/nsec # Warmup Iteration 2 (100ms in 1 thread): 0.743 ops/nsec # Warmup Iteration 3 (100ms in 1 thread): 0.844 ops/nsec # Warmup Iteration 4 (100ms in 1 thread): 0.841 ops/nsec # Warmup Iteration 5 (100ms in 1 thread): 0.843 ops/nsec Iteration 1 (100ms in 1 thread): 0.831 ops/nsec Iteration 2 (100ms in 1 thread): 0.810 ops/nsec Iteration 3 (100ms in 1 thread): 0.923 ops/nsec Iteration 4 (100ms in 1 thread): 0.830 ops/nsec Iteration 5 (100ms in 1 thread): 0.830 ops/nsec Run result "***": 0.845 ?(95%) 0.056 ?(99%) 0.093 ops/nsec Run statistics "***": min = 0.810, avg = 0.845, max = 0.923, stdev = 0.045 Run confidence intervals "***": 95% [0.789, 0.900], 99% [0.752, 0.937] ------------------ 8< ------------------------------------------------ ...into this... ------------------ 8< ------------------------------------------------ # Fork: 9 of 10 # Running: org.openjdk.jmh.samples.JMHSample_01_HelloWorld.hello # Warmup: 5 iterations, 100 ms each # Measurement: 5 iterations, 100 ms each # Threads: 1 thread, will synchronize iterations # Benchmark mode: Throughput, ops/time # Warmup Iteration 1: 0.089 ops/nsec # Warmup Iteration 2: 1.857 ops/nsec # Warmup Iteration 3: 1.959 ops/nsec # Warmup Iteration 4: 1.964 ops/nsec # Warmup Iteration 5: 1.953 ops/nsec Iteration 1: 1.964 ops/nsec Iteration 2: 1.964 ops/nsec Iteration 3: 1.964 ops/nsec Iteration 4: 1.968 ops/nsec Iteration 5: 1.971 ops/nsec Result: 1.966 ?(95%) 0.004 ?(99%) 0.006 ops/nsec Statistics: (min, avg, max) = (1.964, 1.966, 1.971), stdev = 0.003 Confidence intervals: 95% [1.962, 1.970], 99% [1.960, 1.972] ------------------ 8< ------------------------------------------------ Any objections for the change? -Aleksey. From staffan.friberg at oracle.com Fri Aug 30 07:40:53 2013 From: staffan.friberg at oracle.com (Staffan Friberg) Date: Fri, 30 Aug 2013 07:40:53 -0700 Subject: RFR: Cleaning up human-readable output In-Reply-To: <5220629F.4050404@oracle.com> References: <5220629F.4050404@oracle.com> Message-ID: <5220AEF5.4000103@oracle.com> I like it. Much cleaner and readable. What does the Fork line refer to? Number of executed benchmarks in forked mode? If that is the case perhaps change to something like. Run Progress: 9 of 10, [Forked | In Process] //Staffan On 2013-08-30 02:15, Aleksey Shipilev wrote: > Hi, > > The human-readable output seems to be overloaded with the info. Let's > prune it! I have the change which transforms the output like this: > > ------------------ 8< ------------------------------------------------ > > # Runtime (per iteration): 100ms > # Iterations: 5 > # Thread count: 1 > # Threads will synchronize iterations > # Benchmark mode: Throughput, ops/time > # Running: org.openjdk.jmh.samples.JMHSample_01_HelloWorld.hello > # Warmup Iteration 1 (100ms in 1 thread): 0.634 ops/nsec > # Warmup Iteration 2 (100ms in 1 thread): 0.743 ops/nsec > # Warmup Iteration 3 (100ms in 1 thread): 0.844 ops/nsec > # Warmup Iteration 4 (100ms in 1 thread): 0.841 ops/nsec > # Warmup Iteration 5 (100ms in 1 thread): 0.843 ops/nsec > Iteration 1 (100ms in 1 thread): 0.831 ops/nsec > Iteration 2 (100ms in 1 thread): 0.810 ops/nsec > Iteration 3 (100ms in 1 thread): 0.923 ops/nsec > Iteration 4 (100ms in 1 thread): 0.830 ops/nsec > Iteration 5 (100ms in 1 thread): 0.830 ops/nsec > > Run result "***": 0.845 ?(95%) 0.056 ?(99%) 0.093 ops/nsec > Run statistics "***": min = 0.810, avg = 0.845, max = 0.923, stdev = 0.045 > Run confidence intervals "***": 95% [0.789, 0.900], 99% [0.752, 0.937] > > ------------------ 8< ------------------------------------------------ > > ...into this... > > ------------------ 8< ------------------------------------------------ > > # Fork: 9 of 10 > # Running: org.openjdk.jmh.samples.JMHSample_01_HelloWorld.hello > # Warmup: 5 iterations, 100 ms each > # Measurement: 5 iterations, 100 ms each > # Threads: 1 thread, will synchronize iterations > # Benchmark mode: Throughput, ops/time > # Warmup Iteration 1: 0.089 ops/nsec > # Warmup Iteration 2: 1.857 ops/nsec > # Warmup Iteration 3: 1.959 ops/nsec > # Warmup Iteration 4: 1.964 ops/nsec > # Warmup Iteration 5: 1.953 ops/nsec > Iteration 1: 1.964 ops/nsec > Iteration 2: 1.964 ops/nsec > Iteration 3: 1.964 ops/nsec > Iteration 4: 1.968 ops/nsec > Iteration 5: 1.971 ops/nsec > > Result: 1.966 ?(95%) 0.004 ?(99%) 0.006 ops/nsec > Statistics: (min, avg, max) = (1.964, 1.966, 1.971), stdev = 0.003 > Confidence intervals: 95% [1.962, 1.970], 99% [1.960, 1.972] > > ------------------ 8< ------------------------------------------------ > > Any objections for the change? > > -Aleksey. From aleksey.shipilev at oracle.com Fri Aug 30 07:52:25 2013 From: aleksey.shipilev at oracle.com (Aleksey Shipilev) Date: Fri, 30 Aug 2013 18:52:25 +0400 Subject: RFR: Cleaning up human-readable output In-Reply-To: <5220AEF5.4000103@oracle.com> References: <5220629F.4050404@oracle.com> <5220AEF5.4000103@oracle.com> Message-ID: <5220B1A9.8080806@oracle.com> On 08/30/2013 06:40 PM, Staffan Friberg wrote: > What does the Fork line refer to? Number of executed benchmarks in > forked mode? > If that is the case perhaps change to something like. > Run Progress: 9 of 10, [Forked | In Process] You are late to the party, Staffan! ;) JMH is able to run the same benchmark in multiple consecutive forks, and aggregate the results from them. This opens the way to measure run-to-run variance. -Aleksey. From aleksey.shipilev at oracle.com Fri Aug 30 09:36:15 2013 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Fri, 30 Aug 2013 16:36:15 +0000 Subject: hg: code-tools/jmh: Prune the human-readable output, fix the long-standing usability glitches. Message-ID: <20130830163615.7E3E962430@hg.openjdk.java.net> Changeset: 4fc586852aff Author: shade Date: 2013-08-30 20:36 +0400 URL: http://hg.openjdk.java.net/code-tools/jmh/rev/4fc586852aff Prune the human-readable output, fix the long-standing usability glitches. ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/AverageTimePerOp.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/OpsPerTimeUnit.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/Result.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/SampleTimePerOp.java ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/SingleShotTime.java ! jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java ! jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/TimeValue.java ! jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestAverageTimePerOp.java ! jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestOpsPerTimeUnit.java ! jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestSampleTimePerOp.java ! jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestSingleShotTime.java From heliofrota at gmail.com Fri Aug 30 16:57:30 2013 From: heliofrota at gmail.com (Helio Frota) Date: Fri, 30 Aug 2013 20:57:30 -0300 Subject: hg: code-tools/jmh: Prune the human-readable output, fix the long-standing usability glitches. In-Reply-To: <20130830163615.7E3E962430@hg.openjdk.java.net> References: <20130830163615.7E3E962430@hg.openjdk.java.net> Message-ID: Hi, Very good ! Better output ! # Fork: 1 of 1 # Warmup: 5 iterations, 3 s each # Measurement: 20 iterations, 5 s each # Threads: 1 thread, will synchronize iterations # Benchmark mode: Throughput, ops/time # Running: net.java.adoptopenjdk.Test.pleaseCheck # Warmup Iteration 1: 17242.651 ops/ms # Warmup Iteration 2: 18511.030 ops/ms # Warmup Iteration 3: 18436.432 ops/ms # Warmup Iteration 4: 18312.659 ops/ms # Warmup Iteration 5: 18329.011 ops/ms Iteration 1: 18316.492 ops/ms Iteration 2: 18313.031 ops/ms Iteration 3: 18538.277 ops/ms Iteration 4: 18353.455 ops/ms Iteration 5: 18335.677 ops/ms Iteration 6: 18496.823 ops/ms Iteration 7: 18351.255 ops/ms Iteration 8: 18250.810 ops/ms Iteration 9: 18360.882 ops/ms Iteration 10: 17231.035 ops/ms Iteration 11: 18250.416 ops/ms Iteration 12: 18564.057 ops/ms Iteration 13: 18355.640 ops/ms Iteration 14: 18247.818 ops/ms Iteration 15: 18126.759 ops/ms Iteration 16: 18373.652 ops/ms Iteration 17: 18187.197 ops/ms Iteration 18: 18307.945 ops/ms Iteration 19: 17981.640 ops/ms Iteration 20: 18114.882 ops/ms Result: 18252.887 ?(95%) 130.133 ?(99%) 177.883 ops/ms Statistics: (min, avg, max) = (17231.035, 18252.887, 18564.057), stdev = 278.056 Confidence intervals: 95% [18122.755, 18383.020], 99% [18075.004, 18430.770] Benchmark Mode Thr Cnt Sec Mean Mean error Units n.j.a.Test.pleaseCheck thrpt 1 20 5 18252.887 177.883 ops/ms thanks 2013/8/30 > Changeset: 4fc586852aff > Author: shade > Date: 2013-08-30 20:36 +0400 > URL: http://hg.openjdk.java.net/code-tools/jmh/rev/4fc586852aff > > Prune the human-readable output, fix the long-standing usability glitches. > > ! > jmh-core/src/main/java/org/openjdk/jmh/logic/results/AverageTimePerOp.java > ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/OpsPerTimeUnit.java > ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/Result.java > ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/SampleTimePerOp.java > ! jmh-core/src/main/java/org/openjdk/jmh/logic/results/SingleShotTime.java > ! > jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java > ! jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java > ! jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/TimeValue.java > ! > jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestAverageTimePerOp.java > ! > jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestOpsPerTimeUnit.java > ! > jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestSampleTimePerOp.java > ! > jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestSingleShotTime.java > > -- Helio Frota JUG Leader - CEJUG heliofrota.com