diff --git a/benchmark/README.md b/benchmark/README.md new file mode 100644 index 0000000000..1065fcae2f --- /dev/null +++ b/benchmark/README.md @@ -0,0 +1,49 @@ +# ruby/benchmark + +This directory has benchmark definitions to be run with +[benchmark\_driver.gem](https://github.com/benchmark-driver/benchmark-driver). + +## Normal usage + +Execute `gem install benchmark-driver` and run a command like: + +```console +# Run a benchmark script with the ruby in the $PATH +benchmark-driver benchmark/erb_render.yml + +# Run all benchmark scripts with multiple Ruby executables or options +benchmark-driver benchmark/*.yml -e /path/to/ruby -e '/path/to/ruby,--jit' + +# Or compare Ruby versions managed by rbenv +benchmark-driver benchmark/*.yml --rbenv '2.5.1;2.6.0-preview2,--jit' +``` + +## make benchmark + +Using `make benchmark`, `make update-benchmark-driver` automatically downloads +the supported version of benchmark-driver, and it runs benchmarks with the downloaded +benchmark-driver. + +```console +# Run all benchmarks with the ruby in the $PATH and the built ruby +make benchmark + +# Or compare with specific ruby binary +make benchmark COMPARE_RUBY="/path/to/ruby --jit" + +# You can specify any option via $OPTS +make benchmark OPTS="--help" +``` + +## make benchmark-each + +`make benchmark-each` is similar to `make benchmark`, but it allows to execute +some specific benchmarks. + +```console +# Run vm1 benchmarks +make benchmark-each ITEM=vm1 + +# Match erb but exclude app_erb to run only erb_render +make benchmark-each ITEM=erb OPTS="--exclude=app_erb" +``` diff --git a/benchmark/driver.rb b/benchmark/driver.rb index b673a84ca0..53c8d6026e 100755 --- a/benchmark/driver.rb +++ b/benchmark/driver.rb @@ -1,6 +1,6 @@ #!/usr/bin/env ruby # -# Ruby Benchmark driver +# Wrapper of benchmark-driver command for `make benchmark` and `make benchmark-each`. # begin