Add sunspider to desktop-driver
This commit is contained in:
Родитель
052f7f4d15
Коммит
f8d0464380
|
@ -42,8 +42,12 @@ class Octane(Benchmark):
|
|||
ret.append({'name': key, 'time': results[key]})
|
||||
return ret
|
||||
|
||||
class SunSpider(Benchmark):
|
||||
def __init__(self):
|
||||
Benchmark.__init__(self, "ss", "desktop-driver/ss.html")
|
||||
|
||||
Benchmarks = [Octane()]
|
||||
|
||||
Benchmarks = [Octane(), SunSpider()]
|
||||
|
||||
# Test if server is running and start server if needed.
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
|
|
|
@ -0,0 +1,129 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<meta charset=utf8>
|
||||
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
|
||||
<title>SunSpider 1.0.2 JavaScript Benchmark (sunspider-1.0.2 test suite - In Progress...)</title>
|
||||
</head>
|
||||
|
||||
<body onload="start()">
|
||||
|
||||
<h2><span id="logo">☀</span>SunSpider JavaScript Benchmark <small>(In Progress...)</small></h2>
|
||||
<h3>Content Version: sunspider-1.0.2</h3>
|
||||
|
||||
<!-- TODO: generate these js files on the fly in server.py -->
|
||||
<script src="sunspider-test-prefix.js"></script>
|
||||
<script src="sunspider-test-contents.js"></script>
|
||||
<script>
|
||||
var testIndex = -1;
|
||||
var currentRepeat = -1;
|
||||
var repeatCount = 10;
|
||||
var warmupMS = 8;
|
||||
|
||||
var output = [];
|
||||
output.length = repeatCount;
|
||||
for (var i = 0; i < output.length; i++) {
|
||||
output[i] = {};
|
||||
}
|
||||
|
||||
function warmup()
|
||||
{
|
||||
for (var start = new Date; new Date - start < warmupMS; ) {
|
||||
for (var i = 0; i < 100; ++i) {
|
||||
if (Math.atan(Math.acos(Math.asin(Math.random()))) > 4) // Always false.
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function start()
|
||||
{
|
||||
window.setTimeout(next, 128);
|
||||
}
|
||||
|
||||
function next()
|
||||
{
|
||||
document.getElementById("frameparent").innerHTML = "";
|
||||
document.getElementById("frameparent").innerHTML = "<iframe id='testframe'>";
|
||||
var testFrame = document.getElementById("testframe");
|
||||
if (++testIndex < tests.length) {
|
||||
// Warm up the CPU a little bit, in case power management clocked it down
|
||||
// or put it to sleep. We're trying to strike a balance here: do enough
|
||||
// work so that all browsers see the CPU at an equal clock rate, but
|
||||
// not so much work that we hide performance problems caused by overly
|
||||
// aggressive power management.
|
||||
warmup();
|
||||
|
||||
testFrame.contentDocument.open();
|
||||
testFrame.contentDocument.write(testContents[testIndex]);
|
||||
testFrame.contentDocument.close();
|
||||
|
||||
window.setTimeout(next, 0);
|
||||
} else if (++currentRepeat < repeatCount) {
|
||||
document.getElementById("countdown").innerHTML = repeatCount - currentRepeat;
|
||||
testIndex = -1;
|
||||
|
||||
window.setTimeout(next, 128);
|
||||
} else {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
function recordResult(time)
|
||||
{
|
||||
if (currentRepeat >= 0) // negative repeats are warmups
|
||||
output[currentRepeat][tests[testIndex]] = time;
|
||||
}
|
||||
|
||||
function finish()
|
||||
{
|
||||
var total = 0;
|
||||
var results = [];
|
||||
for (var test in output[0]) {
|
||||
var time = 0
|
||||
for (var i = 0; i < output.length; i++) {
|
||||
time += output[i][test];
|
||||
}
|
||||
total += time;
|
||||
results[results.length] = {'name': test, 'time': time / output.length}
|
||||
}
|
||||
results[results.length] = {'name': "__total__", 'time': total / output.length}
|
||||
|
||||
console.log(results)
|
||||
|
||||
location.href = "/submit?results="+encodeURIComponent(JSON.stringify(results))
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<h3 id="countdown">warmup</h3>
|
||||
<div id="frameparent"></div>
|
||||
|
||||
</body>
|
||||
</html>
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -0,0 +1,2 @@
|
|||
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" ];
|
Загрузка…
Ссылка в новой задаче