diff options
author | Julian_Chu <walkingice@0xlab.org> | 2011-07-27 21:50:12 +0800 |
---|---|---|
committer | Julian_Chu <walkingice@0xlab.org> | 2011-07-28 02:52:23 +0800 |
commit | 404b0d27ef29eaff0fd46c8b5996d0b147dcf0b8 (patch) | |
tree | 309c080a7958c25c0a1813862b67112d1af45b53 | |
parent | 99a97e300c345a0510aea9c731adbd27bad2f684 (diff) | |
download | 0xbench-404b0d27ef29eaff0fd46c8b5996d0b147dcf0b8.tar.gz |
Add original files form external/Webkit
* sunspider.css
From webkit/SunSpider/hosted/sunspider.css
* sunspider-analyze-results.js
From webkit/SunSpider/resources/sunspider-analyze-results.js
* driver.html
From webkit/SunSpider/resources/driver-TEMPLATE.html
-rw-r--r-- | assets/driver.html | 115 | ||||
-rw-r--r-- | assets/sunspider-analyze-results.js | 268 | ||||
-rw-r--r-- | assets/sunspider.css | 31 |
3 files changed, 414 insertions, 0 deletions
diff --git a/assets/driver.html b/assets/driver.html new file mode 100644 index 0000000..12d0952 --- /dev/null +++ b/assets/driver.html @@ -0,0 +1,115 @@ +<!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 0.9.1 JavaScript Benchmark (@SUITE@ test suite - In Progress...)</title> +<link rel="stylesheet" href="../sunspider.css"> +</head> + +<body onload="start()"> + +<h2><span id="logo">☀</span>SunSpider JavaScript Benchmark <small>(In Progress...)</small></h2> +<h3>Content Version: @SUITE@</h3> + +<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 output = []; +output.length = repeatCount; +for (var i = 0; i < output.length; i++) { + output[i] = {}; +} + +function start() +{ + window.setTimeout(reallyNext, 500); +} + +function next() +{ + window.setTimeout(reallyNext, 10); +} + +function reallyNext() +{ + document.getElementById("frameparent").innerHTML = ""; + document.getElementById("frameparent").innerHTML = "<iframe id='testframe'>"; + var testFrame = document.getElementById("testframe"); + testIndex++; + if (testIndex < tests.length) { + testFrame.contentDocument.open(); + testFrame.contentDocument.write(testContents[testIndex]); + testFrame.contentDocument.close; + } else if (++currentRepeat < repeatCount) { + testIndex = 0; + testFrame.contentDocument.open(); + testFrame.contentDocument.write(testContents[testIndex]); + testFrame.contentDocument.close; + } else { + finish(); + } +} + +function recordResult(time) +{ + if (currentRepeat >= 0) // negative repeats are warmups + output[currentRepeat][tests[testIndex]] = time; + next(); +} + +function finish() +{ + var outputString = "{"; + outputString += '"v": "@SUITE@", '; + for (var test in output[0]) { + outputString += '"' + test + '":['; + for (var i = 0; i < output.length; i++) { + outputString += output[i][test] + ","; + } + outputString = outputString.substring(0, outputString.length - 1); + outputString += "],"; + } + outputString = outputString.substring(0, outputString.length - 1); + outputString += "}"; + + location = "results.html?" + encodeURI(outputString); +} + +</script> + +<div id="frameparent"> +</div> + +</body> +</html> diff --git a/assets/sunspider-analyze-results.js b/assets/sunspider-analyze-results.js new file mode 100644 index 0000000..d849f59 --- /dev/null +++ b/assets/sunspider-analyze-results.js @@ -0,0 +1,268 @@ +/* + * 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 count = output.length; + +var itemTotals = {}; +itemTotals.length = count; + +var total = 0; +var categoryTotals = {}; +var testTotalsByCategory = {}; + +var mean = 0; +var categoryMeans = {}; +var testMeansByCategory = {}; + +var stdDev = 0; +var categoryStdDevs = {}; +var testStdDevsByCategory = {}; + +var stdErr = 0; +var categoryStdErrs = {}; +var testStdErrsByCategory = {}; + +function initialize() +{ + itemTotals = {total: []}; + + for (var i = 0; i < categories.length; i++) { + var category = categories[i]; + itemTotals[category] = []; + categoryTotals[category] = 0; + testTotalsByCategory[category] = {}; + categoryMeans[category] = 0; + testMeansByCategory[category] = {}; + categoryStdDevs[category] = 0; + testStdDevsByCategory[category] = {}; + categoryStdErrs[category] = 0; + testStdErrsByCategory[category] = {}; + } + + for (var i = 0; i < tests.length; i++) { + var test = tests[i]; + itemTotals[test] = []; + var category = test.replace(/-.*/, ""); + testTotalsByCategory[category][test] = 0; + testMeansByCategory[category][test] = 0; + testStdDevsByCategory[category][test] = 0; + testStdErrsByCategory[category][test] = 0; + } + + for (var i = 0; i < count; i++) { + itemTotals["total"][i] = 0; + for (var category in categoryTotals) { + itemTotals[category][i] = 0; + for (var test in testTotalsByCategory[category]) { + itemTotals[test][i] = 0; + } + } + } +} + +function computeItemTotals() +{ + for (var i = 0; i < output.length; i++) { + var result = output[i]; + for (var test in result) { + var time = result[test]; + var category = test.replace(/-.*/, ""); + itemTotals["total"][i] += time; + itemTotals[category][i] += time; + itemTotals[test][i] += time; + } + } +} + +function computeTotals() +{ + for (var i = 0; i < output.length; i++) { + var result = output[i]; + for (var test in result) { + var time = result[test]; + var category = test.replace(/-.*/, ""); + total += time; + categoryTotals[category] += time; + testTotalsByCategory[category][test] += time; + } + } +} + +function computeMeans() +{ + mean = total / count; + for (var category in categoryTotals) { + categoryMeans[category] = categoryTotals[category] / count; + for (var test in testTotalsByCategory[category]) { + testMeansByCategory[category][test] = testTotalsByCategory[category][test] / count; + } + } +} + +function standardDeviation(mean, items) +{ + var deltaSquaredSum = 0; + for (var i = 0; i < items.length; i++) { + var delta = items[i] - mean; + deltaSquaredSum += delta * delta; + } + variance = deltaSquaredSum / (items.length - 1); + return Math.sqrt(variance); +} + +function computeStdDevs() +{ + stdDev = standardDeviation(mean, itemTotals["total"]); + for (var category in categoryStdDevs) { + categoryStdDevs[category] = standardDeviation(categoryMeans[category], itemTotals[category]); + } + for (var category in categoryStdDevs) { + for (var test in testStdDevsByCategory[category]) { + testStdDevsByCategory[category][test] = standardDeviation(testMeansByCategory[category][test], itemTotals[test]); + } + } +} + +function computeStdErrors() +{ + var sqrtCount = Math.sqrt(count); + + stdErr = stdDev / sqrtCount; + for (var category in categoryStdErrs) { + categoryStdErrs[category] = categoryStdDevs[category] / sqrtCount; + } + for (var category in categoryStdDevs) { + for (var test in testStdErrsByCategory[category]) { + testStdErrsByCategory[category][test] = testStdDevsByCategory[category][test] / sqrtCount; + } + } + +} + +var tDistribution = [NaN, NaN, 12.71, 4.30, 3.18, 2.78, 2.57, 2.45, 2.36, 2.31, 2.26, 2.23, 2.20, 2.18, 2.16, 2.14, 2.13, 2.12, 2.11, 2.10, 2.09, 2.09, 2.08, 2.07, 2.07, 2.06, 2.06, 2.06, 2.05, 2.05, 2.05, 2.04, 2.04, 2.04, 2.03, 2.03, 2.03, 2.03, 2.03, 2.02, 2.02, 2.02, 2.02, 2.02, 2.02, 2.02, 2.01, 2.01, 2.01, 2.01, 2.01, 2.01, 2.01, 2.01, 2.01, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.96]; +var tMax = tDistribution.length; +var tLimit = 1.96; + +function tDist(n) +{ + if (n > tMax) + return tLimit; + return tDistribution[n]; +} + + +function formatResult(meanWidth, mean, stdErr, n) +{ + var meanString = mean.toFixed(1).toString(); + while (meanString.length < meanWidth) { + meanString = " " + meanString; + } + + if (n == 1) + return meanString + "ms"; + + return meanString + "ms +/- " + ((tDist(n) * stdErr / mean) * 100).toFixed(1) + "%"; +} + +function computeLabelWidth() +{ + var width = "Total".length; + for (var category in categoryMeans) { + if (category.length + 2 > width) + width = category.length + 2; + } + for (var i = 0; i < tests.length; i++) { + var shortName = tests[i].replace(/^[^-]*-/, ""); + if (shortName.length + 4 > width) + width = shortName.length + 4; + } + + return width; +} + +function computeMeanWidth() +{ + var width = mean.toFixed(1).toString().length; + for (var category in categoryMeans) { + var candidate = categoryMeans[category].toFixed(2).toString().length; + if (candidate > width) + width = candidate; + for (var test in testMeansByCategory[category]) { + var candidate = testMeansByCategory[category][test].toFixed(2).toString().length; + if (candidate > width) + width = candidate; + } + } + + return width; +} + +function resultLine(labelWidth, indent, label, meanWidth, mean, stdErr) +{ + var result = ""; + for (i = 0; i < indent; i++) { + result += " "; + } + + result += label + ": "; + + for (i = 0; i < (labelWidth - (label.length + indent)); i++) { + result += " "; + } + + return result + formatResult(meanWidth, mean, stdErr, count); +} + +function printOutput() +{ + var labelWidth = computeLabelWidth(); + var meanWidth = computeMeanWidth(); + + print("\n"); + print("============================================"); + if (count == 1) + print("RESULTS"); + else + print("RESULTS (means and 95% confidence intervals)"); + print("--------------------------------------------"); + print(resultLine(labelWidth, 0, "Total", meanWidth, mean, stdErr)); + print("--------------------------------------------"); + for (var category in categoryMeans) { + print(""); + print(resultLine(labelWidth, 2, category, meanWidth, categoryMeans[category], categoryStdErrs[category])); + for (var test in testMeansByCategory[category]) { + var shortName = test.replace(/^[^-]*-/, ""); + print(resultLine(labelWidth, 4, shortName, meanWidth, testMeansByCategory[category][test], testStdErrsByCategory[category][test])); + } + } +} + +initialize(); +computeItemTotals(); +computeTotals(); +computeMeans(); +computeStdDevs(); +computeStdErrors(); +printOutput(); diff --git a/assets/sunspider.css b/assets/sunspider.css new file mode 100644 index 0000000..7a17979 --- /dev/null +++ b/assets/sunspider.css @@ -0,0 +1,31 @@ + +body { font-family: sans-serif; + margin: 20px; + background-color: #D9D5A1; + color: #1B0636 } + +h2 { background-color: #4E8AB9; + margin: -20px -20px 0px -20px; + padding: 30px 20px 30px 20px; + color: yellow; + border-bottom: 2px solid #360D6B; + zoom: 1.0 /* I CAN HAS LAYOUT? (ie hack) */ } + +dt { font-weight: bold } + +dd { margin-bottom: 1em; margin-top: 0.5em } + +:link { color: #1363A1 } +:visited { color: #5113A1 } + +#testframe { margin-top: 20px; + width: 80%; + height: 500px; + border: 2px solid #360D6B } + +#logo { float: left; + position: relative; + bottom: 0.33em; + padding-right: 20px; + margin-bottom: -40px; + font-size: 3em } |