All Classes and Interfaces

Class
Description
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Aggregator composes multiple results into one.
 
 
 
 
 
 
 
 
 
This implements a simple String armoring scheme that resembles Base64.
 
 
 
 
 
A profiler based on async-profiler.
 
 
 
 
 
AuxCounters annotation can be used to mark State objects as the bearers of auxiliary secondary results.
 
Result class that stores average operation time.
 
Abstract runner, the base class for Runner and ForkedRunner.
Benchmark annotates the benchmark method.
Internal exception in JMH.
Benchmark generator.
 
 
Base class for all benchmarks handlers.
 
Handles thread-local data for each worker that should not change between the iterations.
 
Helper class for listing micro benchmarks.
 
Benchmark mode declares the default modes in which this benchmark would run.
Benchmark parameters.
 
 
 
 
 
 
Benchmark result.
 
 
 
Accepts the binary data from the forked VM and pushes it to parent VM as appropriate.
Black Hole.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Bounded variant of PriorityQueue.
 
 
Class metadata.
 
 
A utility class for loading classes in various ways.
 
Class that handles all the command line options.
Compiler control annotation may be used to affect the compilation of particular methods in the benchmarks.
Compilation mode.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Control object, used to communicate significant information from JMH to the benchmark.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
JMH global defaults: these are used when no other values are available.
 
 
Mac OS X perfasm profiler based on DTrace "profile-n" provider which samples program counter by timer interrupt.
 
 
 
 
 
 
 
External profiler: profilers to be run outside of JVM.
Thrown by worker threads when they detect other threads have failed.
Field metadata info.
 
A utility class for File creation and manipulation.
 
Fork annotation allows to set the default forking parameters for the benchmark.
Main program entry point for forked JVM instance
Hangup thread will detach us from the host VM properly, in three cases: - normal shutdown - shutdown with benchmark exception - any System.exit call The need to intercept System.exit calls is the reason to register ourselves as the shutdown hook.
Shutdown timeout thread will forcefully exit the VM in two cases: - stray non-daemon thread prevents the VM from exiting - all user threads have finished, but we are stuck in some shutdown hook or finalizer In all other "normal" cases, VM will exit before the timeout expires.
Runner frontend class.
 
 
 
This class encapsulates any platform-specific functionality.
 
Generator destination.
Generator source.
Execution group.
GroupThreads defines how many threads are participating in running a particular Benchmark method in the group.
 
 
 
 
 
 
 
 
 
The InfraControl logic class.
 
 
 
 
 
 
 
Will drain the output stream.
Converts option value from String to Integer and makes sure the value exceeds given minimal threshold.
Internal profiler.
 
 
 
Iteration parameters.
 
 
 
 
 
Class contains all info returned by benchmark iteration or/and collected during benchmark iteration.
 
 
 
 
A profiler based on Java Flight Recorder.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Fixtures have different Levels to control when they are about to run.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Chromosome: encodes solution.
Population.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Sometimes you need the black hole not in @Benchmark method, but in helper methods, because you want to pass it through to the concrete implementation which is instantiated in helper methods.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
There are weird cases when the benchmark state is more cleanly described by the set of @States, and those @States reference each other.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Our own crippled classloader, that can only load a simple class over and over again.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Control when to run the fixture methods.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Calculate statistics over a list of doubles.
Main program entry point
 
 
 
Measurement annotations allows to set the default measurement parameters for the benchmark.
Super-interface for all metadata elements.
 
Method info.
 
Benchmark mode.
Basic Multimap.
Basic Multiset.
 
 
 
 
 
 
 
 
 
 
 
OperationsPerInvocation annotations allows to communicate the benchmark does more than one operation, and let JMH to adjust the scores appropriately.
Option class
 
 
 
Internal interface for OutputFormat.
 
 
Encapsulates the OutputFormat call - method name - arguments (assumed to be serializable)
 
 
OutputTimeUnit provides the default time unit to report the results in.
 
Marks the configurable parameter in the benchmark.
Method parameter metadata.
 
 
Always add up all the samples into final result.
 
Main program entry point for exporting the system properties, used for detecting the VM version.
Root profiler interface.
 
 
 
 
 
 
 
Base class for all types of results that can be returned by a benchmark.
 
 
 
 
 
 
 
 
 
 
 
 
 
Runner executes JMH benchmarks.
 
Complete run result.
 
 
 
Always add up all the samples into final result.
Sampling buffer accepts samples.
Result class that samples operation time.
Always add up all the samples into final result.
 
 
 
 
State scope.
 
 
 
 
 
 
 
 
Setup marks the fixture method to be run before the benchmark.
Silent format, does nothing.
Result class that stores once operation execution time.
Averages the time on all levels.
Calculate statistics with just a single value.
 
 
 
 
 
 
Very basic and naive stack profiler.
 
 
 
Marks the state object.
 
 
 
 
JMH VM support tester
 
TearDown marks the fixture method to be run after the benchmark.
 
 
 
 
 
TextReportFormat implementation of OutputFormat.
 
 
 
 
 
 
 
 
 
 
Thread parameters.
 
 
 
 
 
Threads annotation provides the default number of threads to run.
 
 
 
 
 
 
 
Converts String value to Integer and uses Threads.MAX if max string was given.
Result class that counts the number of operations performed during a specified unit of time.
 
Timeout annotation allows to set the default timeout parameters for the benchmark.
A generic time scalar.
 
 
 
 
 
 
 
 
 
Main program entry point detecting the VM version.
Warmup annotation allows to set the default warmup parameters for the benchmark.
Warmup Mode enum
Windows performance profiler based on "xperf" utility.