DYEBench should run 20 iterations in browser
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 13 May 2014 21:08:10 +0000 (21:08 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 13 May 2014 21:08:10 +0000 (21:08 +0000)
https://bugs.webkit.org/show_bug.cgi?id=132795

Reviewed by Gavin Barraclough.

Right now, run-perf-tests runs BYEBench 4 times with different instances of DRT/WTR to get
a more stable time and account for differences in the runtime environment, particularly,
ASLR (Address Space Layout Randomization).

While we can't account for the latter effect when the benchmark is ran inside a browser,
we can at least run 20 iterations to get a more stable (but perhaps biased by ALSR) number.

While the sample size of 20 is statistically unsound to compute the arithmetic mean from,
it's MUCH better than the current sample size of 5.

* DoYouEvenBench/Full.html:
(benchmarkClient.iterationCount): Set the default iteration count to 20.
(startTest): Use benchmarkClient.iterationCount as the iteration count.
* DoYouEvenBench/resources/benchmark-report.js:
(benchmarkClient.iterationCount): Continue to use the old iteration count of 5 when ran
inside run-perf-tests.

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

PerformanceTests/ChangeLog
PerformanceTests/DoYouEvenBench/Full.html
PerformanceTests/DoYouEvenBench/resources/benchmark-report.js

index 19a37d3..c37df70 100644 (file)
@@ -1,3 +1,27 @@
+2014-05-13  Ryosuke Niwa  <rniwa@webkit.org>
+
+        DYEBench should run 20 iterations in browser
+        https://bugs.webkit.org/show_bug.cgi?id=132795
+
+        Reviewed by Gavin Barraclough.
+
+        Right now, run-perf-tests runs BYEBench 4 times with different instances of DRT/WTR to get
+        a more stable time and account for differences in the runtime environment, particularly,
+        ASLR (Address Space Layout Randomization).
+
+        While we can't account for the latter effect when the benchmark is ran inside a browser,
+        we can at least run 20 iterations to get a more stable (but perhaps biased by ALSR) number.
+
+        While the sample size of 20 is statistically unsound to compute the arithmetic mean from,
+        it's MUCH better than the current sample size of 5.
+
+        * DoYouEvenBench/Full.html:
+        (benchmarkClient.iterationCount): Set the default iteration count to 20.
+        (startTest): Use benchmarkClient.iterationCount as the iteration count.
+        * DoYouEvenBench/resources/benchmark-report.js:
+        (benchmarkClient.iterationCount): Continue to use the old iteration count of 5 when ran
+        inside run-perf-tests.
+
 2014-05-09  Ryosuke Niwa  <rniwa@webkit.org>
 
         DYEBench should show 95th percentile right next to the mean with ±
index d4e576f..16569a9 100644 (file)
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <html>
 <head>
-<title>DoYouEvenBench v0.10</title>
+<title>DoYouEvenBench v0.11</title>
 <style type="text/css">
 caption { margin: 0; padding: 0; font-family: sans-serif; font-size: 1em; font-weight: bold; white-space: nowrap; }
 #progressContainer { padding: 605px 0 10px 0; width: 800px; }
@@ -43,6 +43,7 @@ td { text-align: left; }
     }
 
     window.benchmarkClient = {
+        iterationCount: 20,
         willRunTest: function () {
             if (!progress) {
                 // We don't use the real progress element as some implementations animate it.
@@ -79,10 +80,10 @@ td { text-align: left; }
 })();
 
 function startTest() {
-    var iterationCount = 5;
-    benchmarkClient.testsCount = iterationCount * Suites.reduce(function (testsCount, suite) { return testsCount + suite.tests.length; }, 0);
+    var totalSubtestCount = Suites.reduce(function (testsCount, suite) { return testsCount + suite.tests.length; }, 0);
+    benchmarkClient.testsCount = benchmarkClient.iterationCount * totalSubtestCount;
     var runner = new BenchmarkRunner(Suites, benchmarkClient);
-    runner.runMultipleIterations(iterationCount);
+    runner.runMultipleIterations(benchmarkClient.iterationCount);
 }
 
 </script>
index 0ea96c1..f7424e5 100644 (file)
@@ -19,6 +19,7 @@
     var valuesByIteration = new Array;
 
     window.benchmarkClient = {
+        iterationCount: 5, // Use 4 different instances of DRT/WTR to run 5 iterations.
         willStartFirstIteration: function (iterationCount) {
             createTest = function (name, aggregator, isLastTest) {
                 return {