mirror of
https://github.com/Prominence/sorting-benchmarks.git
synced 2026-01-09 18:26:42 +03:00
Create README.md
This commit is contained in:
parent
7811be77ab
commit
f9b545637e
166
README.md
Normal file
166
README.md
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
# Java sorting benchmarks
|
||||||
|
|
||||||
|
### How to use:
|
||||||
|
```bash
|
||||||
|
mvn clean install
|
||||||
|
java -jar target/sorting-benchmark.jar #default behavior -wi 20 -i 20 -f 10
|
||||||
|
java -jar -Darray.size=20000 target/sorting-benchmark.jar -wi 5 -i 5 -f 1
|
||||||
|
```
|
||||||
|
|
||||||
|
### Sample results
|
||||||
|
```
|
||||||
|
Benchmark Mode Cnt Score Error Units
|
||||||
|
SortingBenchmark.bubbleSort avgt 0.440 s/op
|
||||||
|
SortingBenchmark.insertionSort avgt 0.213 s/op
|
||||||
|
SortingBenchmark.javaDefaultSort avgt 0.001 s/op
|
||||||
|
SortingBenchmark.mergeSort avgt 0.002 s/op
|
||||||
|
SortingBenchmark.selectionSort avgt 0.071 s/op
|
||||||
|
```
|
||||||
|
|
||||||
|
### `jmh` command line options
|
||||||
|
```bash
|
||||||
|
$ java -jar target/benchmarks.jar -h
|
||||||
|
|
||||||
|
Usage: java -jar ... [regexp*] [options]
|
||||||
|
[opt] means optional argument.
|
||||||
|
<opt> means required argument.
|
||||||
|
"+" means comma-separated list of values.
|
||||||
|
"time" arguments accept time suffixes, like "100ms".
|
||||||
|
|
||||||
|
[arguments] Benchmarks to run (regexp+).
|
||||||
|
|
||||||
|
-bm <mode> Benchmark mode. Available modes are: [Throughput/thrpt,
|
||||||
|
AverageTime/avgt, SampleTime/sample, SingleShotTime/ss,
|
||||||
|
All/all]
|
||||||
|
|
||||||
|
-bs <int> Batch size: number of benchmark method calls per
|
||||||
|
operation. Some benchmark modes may ignore this
|
||||||
|
setting, please check this separately.
|
||||||
|
|
||||||
|
-e <regexp+> Benchmarks to exclude from the run.
|
||||||
|
|
||||||
|
-f <int> How many times to fork a single benchmark. Use 0 to
|
||||||
|
disable forking altogether. Warning: disabling
|
||||||
|
forking may have detrimental impact on benchmark
|
||||||
|
and infrastructure reliability, you might want
|
||||||
|
to use different warmup mode instead.
|
||||||
|
|
||||||
|
-foe <bool> Should JMH fail immediately if any benchmark had
|
||||||
|
experienced an unrecoverable error? This helps
|
||||||
|
to make quick sanity tests for benchmark suites,
|
||||||
|
as well as make the automated runs with checking error
|
||||||
|
codes.
|
||||||
|
|
||||||
|
-gc <bool> Should JMH force GC between iterations? Forcing
|
||||||
|
the GC may help to lower the noise in GC-heavy benchmarks,
|
||||||
|
at the expense of jeopardizing GC ergonomics decisions.
|
||||||
|
Use with care.
|
||||||
|
|
||||||
|
-h Display help.
|
||||||
|
|
||||||
|
-i <int> Number of measurement iterations to do. Measurement
|
||||||
|
iterations are counted towards the benchmark score.
|
||||||
|
|
||||||
|
-jvm <string> Use given JVM for runs. This option only affects forked
|
||||||
|
runs.
|
||||||
|
|
||||||
|
-jvmArgs <string> Use given JVM arguments. Most options are inherited
|
||||||
|
from the host VM options, but in some cases you want
|
||||||
|
to pass the options only to a forked VM. Either single
|
||||||
|
space-separated option line, or multiple options
|
||||||
|
are accepted. This option only affects forked runs.
|
||||||
|
|
||||||
|
-jvmArgsAppend <string> Same as jvmArgs, but append these options before
|
||||||
|
the already given JVM args.
|
||||||
|
|
||||||
|
-jvmArgsPrepend <string> Same as jvmArgs, but prepend these options before
|
||||||
|
the already given JVM arg.
|
||||||
|
|
||||||
|
-l List the benchmarks that match a filter, and exit.
|
||||||
|
|
||||||
|
-lp List the benchmarks that match a filter, along with
|
||||||
|
parameters, and exit.
|
||||||
|
|
||||||
|
-lprof List profilers.
|
||||||
|
|
||||||
|
-lrf List machine-readable result formats.
|
||||||
|
|
||||||
|
-o <filename> Redirect human-readable output to a given file.
|
||||||
|
|
||||||
|
-opi <int> Override operations per invocation, see @OperationsPerInvocation
|
||||||
|
Javadoc for details.
|
||||||
|
|
||||||
|
-p <param={v,}*> Benchmark parameters. This option is expected to
|
||||||
|
be used once per parameter. Parameter name and parameter
|
||||||
|
values should be separated with equals sign. Parameter
|
||||||
|
values should be separated with commas.
|
||||||
|
|
||||||
|
-prof <profiler> Use profilers to collect additional benchmark data.
|
||||||
|
Some profilers are not available on all JVMs and/or
|
||||||
|
all OSes. Please see the list of available profilers
|
||||||
|
with -lprof.
|
||||||
|
|
||||||
|
-r <time> Minimum time to spend at each measurement iteration.
|
||||||
|
Benchmarks may generally run longer than iteration
|
||||||
|
duration.
|
||||||
|
|
||||||
|
-rf <type> Format type for machine-readable results. These
|
||||||
|
results are written to a separate file (see -rff).
|
||||||
|
See the list of available result formats with -lrf.
|
||||||
|
|
||||||
|
-rff <filename> Write machine-readable results to a given file.
|
||||||
|
The file format is controlled by -rf option. Please
|
||||||
|
see the list of result formats for available formats.
|
||||||
|
|
||||||
|
-si <bool> Should JMH synchronize iterations? This would significantly
|
||||||
|
lower the noise in multithreaded tests, by making
|
||||||
|
sure the measured part happens only when all workers
|
||||||
|
are running.
|
||||||
|
|
||||||
|
-t <int> Number of worker threads to run with. 'max' means
|
||||||
|
the maximum number of hardware threads available
|
||||||
|
on the machine, figured out by JMH itself.
|
||||||
|
|
||||||
|
-tg <int+> Override thread group distribution for asymmetric
|
||||||
|
benchmarks. This option expects a comma-separated
|
||||||
|
list of thread counts within the group. See @Group/@GroupThreads
|
||||||
|
Javadoc for more information.
|
||||||
|
|
||||||
|
-to <time> Timeout for benchmark iteration. After reaching
|
||||||
|
this timeout, JMH will try to interrupt the running
|
||||||
|
tasks. Non-cooperating benchmarks may ignore this
|
||||||
|
timeout.
|
||||||
|
|
||||||
|
-tu <TU> Override time unit in benchmark results. Available
|
||||||
|
time units are: [m, s, ms, us, ns].
|
||||||
|
|
||||||
|
-v <mode> Verbosity mode. Available modes are: [SILENT, NORMAL,
|
||||||
|
EXTRA]
|
||||||
|
|
||||||
|
-w <time> Minimum time to spend at each warmup iteration. Benchmarks
|
||||||
|
may generally run longer than iteration duration.
|
||||||
|
|
||||||
|
-wbs <int> Warmup batch size: number of benchmark method calls
|
||||||
|
per operation. Some benchmark modes may ignore this
|
||||||
|
setting.
|
||||||
|
|
||||||
|
-wf <int> How many warmup forks to make for a single benchmark.
|
||||||
|
All iterations within the warmup fork are not counted
|
||||||
|
towards the benchmark score. Use 0 to disable warmup
|
||||||
|
forks.
|
||||||
|
|
||||||
|
-wi <int> Number of warmup iterations to do. Warmup iterations
|
||||||
|
are not counted towards the benchmark score.
|
||||||
|
|
||||||
|
-wm <mode> Warmup mode for warming up selected benchmarks.
|
||||||
|
Warmup modes are: INDI = Warmup each benchmark individually,
|
||||||
|
then measure it. BULK = Warmup all benchmarks first,
|
||||||
|
then do all the measurements. BULK_INDI = Warmup
|
||||||
|
all benchmarks first, then re-warmup each benchmark
|
||||||
|
individually, then measure it.
|
||||||
|
|
||||||
|
-wmb <regexp+> Warmup benchmarks to include in the run in addition
|
||||||
|
to already selected by the primary filters. Harness
|
||||||
|
will not measure these benchmarks, but only use them
|
||||||
|
for the warmup.
|
||||||
|
```
|
||||||
Loading…
x
Reference in New Issue
Block a user