Results page should show indivisual value
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 20 Sep 2012 20:35:28 +0000 (20:35 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 20 Sep 2012 20:35:28 +0000 (20:35 +0000)
https://bugs.webkit.org/show_bug.cgi?id=97178

Reviewed by Tony Chang.

Show indivisual values instead of statistics (min, max, stdev).

* resources/results-template.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@129161 268f45cc-cd09-0410-ab3c-d52691b4dbfc

PerformanceTests/ChangeLog
PerformanceTests/resources/results-template.html

index c8e6cfa..1b91387 100644 (file)
@@ -1,5 +1,16 @@
 2012-09-20  Ryosuke Niwa  <rniwa@webkit.org>
 
+        Results page should show indivisual value
+        https://bugs.webkit.org/show_bug.cgi?id=97178
+
+        Reviewed by Tony Chang.
+
+        Show indivisual values instead of statistics (min, max, stdev).
+
+        * resources/results-template.html:
+
+2012-09-20  Ryosuke Niwa  <rniwa@webkit.org>
+
         run-perf-tests should record individual value instead of statistics
         https://bugs.webkit.org/show_bug.cgi?id=97155
 
index 300c612..265c3b4 100644 (file)
@@ -146,6 +146,7 @@ $(document).ready(function () {
 function TestResult(associatedTest, result, associatedRun) {
     this.unit = function () { return result.unit; }
     this.test = function () { return associatedTest; }
+    this.values = function () { return result.values ? result.values.map(function (value) { return associatedTest.scalingFactor() * value; }) : undefined; }
     this.unscaledMean = function () { return result.avg; }
     this.mean = function () { return associatedTest.scalingFactor() * result.avg; }
     this.min = function () { return associatedTest.scalingFactor() * result.min; }
@@ -278,13 +279,23 @@ function createPlot(container, test) {
 function attachPlot(test, plotContainer, minIsZero) {
     var results = test.results();
 
-    function makeSubpoints(id, callback) { return $.extend(true, {}, subpointsPlotOptions, {id: id, data: results.map(callback)}); }
-    var plotData = [
-        makeSubpoints('min', function (result, index) { return [index, result.min()]; }),
+    var values = results.reduce(function (values, result, index) {
+        var newValues = result.values();
+        return newValues ? values.concat(newValues.map(function (value) { return [index, value]; })) : values;
+    }, []);
+
+    var plotData = [];
+    if (values.length)
+        plotData = [$.extend(true, {}, subpointsPlotOptions, {data: values})];
+    else {
+        function makeSubpoints(id, callback) { return $.extend(true, {}, subpointsPlotOptions, {id: id, data: results.map(callback)}); }
+        plotData = [makeSubpoints('min', function (result, index) { return [index, result.min()]; }),
         makeSubpoints('max', function (result, index) { return [index, result.max()]; }),
         makeSubpoints('-&#963;', function (result, index) { return [index, result.mean() - result.stdev()]; }),
-        makeSubpoints('+&#963;', function (result, index) { return [index, result.mean() + result.stdev()]; }),
-        {data: results.map(function (result, index) { return [index, result.mean()]; }), color: plotColor}];
+        makeSubpoints('+&#963;', function (result, index) { return [index, result.mean() + result.stdev()]; })];
+    }
+
+    plotData.push({id: '&mu;', data: results.map(function (result, index) { return [index, result.mean()]; }), color: plotColor});
 
     var currentPlotOptions = $.extend(true, {}, mainPlotOptions, {yaxis: {
         min: minIsZero ? 0 : Math.min.apply(Math, results.map(function (result, index) { return result.min(); })) * 0.98,
@@ -343,8 +354,12 @@ function createTableRow(test, referenceResult) {
             secondCell = '</td><td class="' + className + '">' + comparison;
         }
 
+        var statistics = '&sigma;=' + toFixedWidthPrecision(result.stdev()) + ', min=' + toFixedWidthPrecision(result.min())
+            + ', max=' + toFixedWidthPrecision(result.max());
+
         // Tablesorter doesn't know about the second cell so put the comparison in the invisible element.
-        return '<td class="result">' + toFixedWidthPrecision(result.mean()) + hiddenValue + '</td><td class="stdev">&plusmn; '
+        return '<td class="result" title="' + statistics + '">' + toFixedWidthPrecision(result.mean()) + hiddenValue
+            + '</td><td class="stdev" title="' + statistics + '">&plusmn; '
             + formatPercentage(result.stdevRatio()) + secondCell + '</td>';
     }).reduce(function (markup, cell) { return markup + cell; }, ''));