From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- .../sunspider-1.0.1/sunspider-analyze-results.js | 280 +++++++++++++++++++++ 1 file changed, 280 insertions(+) create mode 100644 third_party/webkit/PerformanceTests/SunSpider/sunspider-1.0.1/sunspider-analyze-results.js (limited to 'third_party/webkit/PerformanceTests/SunSpider/sunspider-1.0.1/sunspider-analyze-results.js') diff --git a/third_party/webkit/PerformanceTests/SunSpider/sunspider-1.0.1/sunspider-analyze-results.js b/third_party/webkit/PerformanceTests/SunSpider/sunspider-1.0.1/sunspider-analyze-results.js new file mode 100644 index 0000000000..029e193e97 --- /dev/null +++ b/third_party/webkit/PerformanceTests/SunSpider/sunspider-1.0.1/sunspider-analyze-results.js @@ -0,0 +1,280 @@ +/* + * 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 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 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, mode) +{ + // NaN mean means that the test did not run correctly. + if (mean != mean) { + var result = ""; + for (var i = 0; i < meanWidth - 3; ++i) + result += " "; + if (mode == "test") + result += "ERROR: Invalid test run."; + else + result += "ERROR: Some tests failed."; + return result; + } + + 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, mode) +{ + 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, mode); +} + +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, "total")); + print("--------------------------------------------"); + for (var category in categoryMeans) { + print(""); + print(resultLine(labelWidth, 2, category, meanWidth, categoryMeans[category], categoryStdErrs[category], "category")); + for (var test in testMeansByCategory[category]) { + var shortName = test.replace(/^[^-]*-/, ""); + print(resultLine(labelWidth, 4, shortName, meanWidth, testMeansByCategory[category][test], testStdErrsByCategory[category][test], "test")); + } + } +} + +initialize(); +computeItemTotals(); +computeTotals(); +computeMeans(); +computeStdDevs(); +computeStdErrors(); +printOutput(); -- cgit v1.2.3