⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sunspider-compare-results.js

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 JS
📖 第 1 页 / 共 2 页
字号:
            deltaSquaredSum += delta * delta;        }        variance = deltaSquaredSum / (items.length - 1);        return Math.sqrt(variance);    }        function computeStdDevs(mean, itemTotals, categoryStdDevs, categoryMeans, testStdDevsByCategory, testMeansByCategory)    {        var 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]);            }        }        return stdDev;    }        function computeStdErrors(count, stdDev, categoryStdErrs, categoryStdDevs, testStdErrsByCategory, testStdDevsByCategory)    {        var sqrtCount = Math.sqrt(count);                var 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;            }        }                return stdErr;    }        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 formatMean(meanWidth, mean, stdErr, count)    {        var meanString = mean.toFixed(1).toString();        while (meanString.length < meanWidth) {            meanString = " " + meanString;        }                var error = "+/- " + ((tDist(count) * stdErr / mean) * 100).toFixed(1) + "% ";                return meanString + "ms " + error;    }        function computeLabelWidth()    {        var width = "Total".length;        for (var category in categoryMeans1) {            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(mean, categoryMeans, testMeansByCategory)    {        var width = mean.toFixed(1).toString().length;        for (var category in categoryMeans) {            var candidate = categoryMeans[category].toFixed(1).toString().length;            if (candidate > width)                width = candidate;            for (var test in testMeansByCategory[category]) {                var candidate = testMeansByCategory[category][test].toFixed(1).toString().length;                if (candidate > width)                    width = candidate;            }        }                return width;    }        function pad(str, n)    {        while (str.length < n) {            str += " ";        }        return str;    }        function resultLine(labelWidth, indent, label, meanWidth1, mean1, stdErr1, meanWidth2, mean2, stdErr2)    {        result = pad("", indent);            result += label + ": ";        result = pad(result, labelWidth + 2);                var t = (mean1 - mean2) / (Math.sqrt((stdErr1 * stdErr1) + (stdErr1 * stdErr2)));         var df = count1 + count2 - 2;                var statisticallySignificant = (Math.abs(t) > tDist(df+1));        var diff = mean2 - mean1;        var percentage = 100 * diff / mean1;        var isFaster = diff < 0;        var probablySame = (percentage < 0.1) && !statisticallySignificant;        var ratio = isFaster ? (mean1 / mean2) : (mean2 / mean1);        var fixedRatio = (ratio < 1.2) ? ratio.toFixed(3).toString() : ((ratio < 10) ? ratio.toFixed(2).toString() : ratio.toFixed(1).toString());        var formattedRatio = isFaster ? fixedRatio + "x as fast" : "*" + fixedRatio + "x as slow*";        var diffSummary;        var diffDetail;                if (probablySame) {            diffSummary = "-";            diffDetail = "";        } else if (!statisticallySignificant) {            diffSummary = "??";            diffDetail =  "    not conclusive: might be " + formattedRatio;        } else {            diffSummary = formattedRatio;            diffDetail = "    significant";         }                return result + pad(diffSummary, 18) + formatMean(meanWidth1, mean1, stdErr1, count1) + "  " + formatMean(meanWidth2, mean2, stdErr2, count2) + diffDetail;    }        function printOutput()    {        var labelWidth = computeLabelWidth();        var meanWidth1 = computeMeanWidth(mean1, categoryMeans1, testMeansByCategory1);        var meanWidth2 = computeMeanWidth(mean2, categoryMeans2, testMeansByCategory2);                print("\n");        var header = "TEST";        while (header.length < labelWidth)            header += " ";        header += "  COMPARISON            FROM                 TO             DETAILS";        print(header);        print("");        print("=============================================================================");        print("");        print(resultLine(labelWidth, 0, "** TOTAL **", meanWidth1, mean1, stdErr1, meanWidth2, mean2, stdErr2));        print("");        print("=============================================================================");                for (var category in categoryMeans1) {            print("");            print(resultLine(labelWidth, 2, category,                             meanWidth1, categoryMeans1[category], categoryStdErrs1[category],                             meanWidth2, categoryMeans2[category], categoryStdErrs2[category]));            for (var test in testMeansByCategory1[category]) {                var shortName = test.replace(/^[^-]*-/, "");                print(resultLine(labelWidth, 4, shortName,                                  meanWidth1, testMeansByCategory1[category][test], testStdErrsByCategory1[category][test],                                 meanWidth2, testMeansByCategory2[category][test], testStdErrsByCategory2[category][test]));            }        }    }        initialize();        computeItemTotals(output1, itemTotals1);    computeItemTotals(output2, itemTotals2);    total1 = computeTotals(output1, categoryTotals1, testTotalsByCategory1);    total2 = computeTotals(output2, categoryTotals2, testTotalsByCategory2);    mean1 = computeMeans(count1, total1, categoryTotals1, categoryMeans1, testTotalsByCategory1, testMeansByCategory1);    mean2 = computeMeans(count2, total2, categoryTotals2, categoryMeans2, testTotalsByCategory2, testMeansByCategory2);    stdDev1 = computeStdDevs(mean1, itemTotals1, categoryStdDevs1, categoryMeans1, testStdDevsByCategory1, testMeansByCategory1);    stdDev2 = computeStdDevs(mean2, itemTotals2, categoryStdDevs2, categoryMeans2, testStdDevsByCategory2, testMeansByCategory2);    stdErr1 = computeStdErrors(count1, stdDev1, categoryStdErrs1, categoryStdDevs1, testStdErrsByCategory1, testStdDevsByCategory1);    stdErr2 = computeStdErrors(count2, stdDev2, categoryStdErrs2, categoryStdDevs2, testStdErrsByCategory2, testStdDevsByCategory2);    printOutput();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -