v8/test/benchmarks/csuite
Mike Stanton 98b47ebb33 [Test] CSuite benchmark runner
It's nice to have a quick way to get stable results on the local
machine for the classic d8 benchmarks. CSuite revitalizes an
old tool called BSuite which offers multiple averaged runs,
and a nice ascii display of results.

Sample usage:

./csuite.py octane baseline ~/src/v8/out/d8
./csuite.py octane compare ~/src/v8/out-mine/d8

                              benchmark:    score |   master |      % |
===================================================+==========+========+
                                Richards:  26201.0 |  26568.0 |   -1.4 |
                               DeltaBlue:  55744.0 |  58309.0 |   -4.4 |
                                  Crypto:  31831.0 |  31815.0 |        |
                                RayTrace:  73481.0 |  73185.0 |    0.4 |
              ............<snip>............................
                                  Octane:  36388.0 |  35741.0 |    1.8 |
---------------------------------------------------+----------+--------+


See README.md for more documentation.

Change-Id: I182490506ca07fab1240bd485bd1d7a8920db893
Reviewed-on: https://chromium-review.googlesource.com/c/1387487
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58434}
2018-12-21 13:15:57 +00:00
..
benchmark.py [Test] CSuite benchmark runner 2018-12-21 13:15:57 +00:00
compare-baseline.py [Test] CSuite benchmark runner 2018-12-21 13:15:57 +00:00
csuite.py [Test] CSuite benchmark runner 2018-12-21 13:15:57 +00:00
README.md [Test] CSuite benchmark runner 2018-12-21 13:15:57 +00:00
run-kraken.js [Test] CSuite benchmark runner 2018-12-21 13:15:57 +00:00
sunspider-standalone-driver.js [Test] CSuite benchmark runner 2018-12-21 13:15:57 +00:00

CSuite: Local benchmarking help for V8 performance analysis

CSuite helps you make N averaged runs of a benchmark, then compare with a different binary and/or different flags. It knows about the "classic" benchmarks of SunSpider, Kraken and Octane, which are still useful for investigating peak performance scenarios. It offers a default number of runs, by default they are:

  • SunSpider - 100 runs
  • Kraken - 80 runs
  • Octane - 10 runs

Usage

Say you want to see how much optimization buys you:

./csuite.py kraken baseline ~/src/v8/out/d8 -x="--noopt"
./csuite.py kraken compare ~/src/v8/out/d8

Suppose you are comparing two binaries, and want a quick look at results. Normally, Octane should have about 10 runs, but 3 will only take a few minutes:

./csuite.py -r 3 octane baseline ~/src/v8/out-master/d8
./csuite.py -r 3 octane compare ~/src/v8/out-mine/d8

You can run from any place:

../../somewhere-strange/csuite.py sunspider baseline ./d8
../../somewhere-strange/csuite.py sunspider compare ./d8-better

Note that all output files are created in the directory where you run from. A _benchmark_runner_data directory will be created to store run output, and a _results directory as well for scores.

For more detailed documentation, see:

./csuite.py --help

Output from the runners is captured into files and cached, so you can cancel and resume multi-hour benchmark runs with minimal loss of data/time. The -f flag forces re-running even if these cached files still exist.