v8/test/benchmarks/csuite/sunspider-standalone-driver.js
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

76 lines
2.9 KiB
JavaScript

// Copyright 2018 the V8 project authors. All rights reserved.
/*
* Copyright (C) 2007 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
var suitePath = "sunspider-0.9.1";
var tests = [ "3d-cube", "3d-morph", "3d-raytrace",
"access-binary-trees", "access-fannkuch",
"access-nbody", "access-nsieve",
"bitops-3bit-bits-in-byte", "bitops-bits-in-byte",
"bitops-bitwise-and", "bitops-nsieve-bits",
"controlflow-recursive", "crypto-aes",
"crypto-md5", "crypto-sha1", "date-format-tofte",
"date-format-xparb", "math-cordic", "math-partial-sums",
"math-spectral-norm", "regexp-dna", "string-base64",
"string-fasta", "string-tagcloud", "string-unpack-code",
"string-validate-input" ];
var categories = [ "3d", "access", "bitops", "controlflow", "crypto",
"date", "math", "regexp", "string" ];
var results = new Array();
(function(){
var time = 0;
var times = [];
times.length = tests.length;
for (var j = 0; j < tests.length; j++) {
var testName = tests[j] + ".js";
var startTime = new Date;
if (testName.indexOf('parse-only') >= 0)
checkSyntax(testName);
else
load(testName);
times[j] = new Date() - startTime;
gc();
}
function recordResults(tests, times)
{
var output = "";
// Changed original output to match test infrastructure.
for (j = 0; j < tests.length; j++) {
output += tests[j] + '-sunspider(RunTime): ' +
Math.max(times[j], 1) + ' ms.\n';
}
print(output);
}
recordResults(tests, times);
})();