Revision: 9851
Author:   [email protected]
Date:     Mon Oct 31 10:05:37 2011
Log: Allow to set a time limit for spinning-balls and output the pause distribution at the end.

BUG=
TEST=

Review URL: http://codereview.chromium.org/8428002
http://code.google.com/p/v8/source/detail?r=9851

Modified:
 /branches/bleeding_edge/benchmarks/spinning-balls/v.js

=======================================
--- /branches/bleeding_edge/benchmarks/spinning-balls/v.js Tue Oct 11 04:43:48 2011 +++ /branches/bleeding_edge/benchmarks/spinning-balls/v.js Mon Oct 31 10:05:37 2011
@@ -57,6 +57,11 @@
 var scene = void 0;
 var pausePlot = void 0;
 var splayTree = void 0;
+var numberOfFrames = 0;
+var sumOfSquaredPauses = 0;
+var benchmarkStartTime = void 0;
+var benchmarkTimeLimit = void 0;
+var pauseDistribution = [];


 function Point(x, y, z, payload) {
@@ -343,9 +348,43 @@
 };


+function updateStats(pause) {
+  numberOfFrames++;
+  if (pause > 20) {
+    sumOfSquaredPauses += (pause - 20) * (pause - 20);
+  }
+  pauseDistribution[pause / 10] |= 0;
+  pauseDistribution[pause / 10]++;
+}
+
+
+function renderStats() {
+  var msg = document.createElement("p");
+  msg.innerHTML = "Score " +
+    Math.round(numberOfFrames * 1000 / sumOfSquaredPauses);
+  var table = document.createElement("table");
+  table.align = "center";
+  for (var i = 0; i < pauseDistribution.length; i++) {
+    if (pauseDistribution[i] > 0) {
+      var row = document.createElement("tr");
+      var time = document.createElement("td");
+      var count = document.createElement("td");
+      time.innerHTML = i*10 + "-" + (i+1)*10 + "ms";
+      count.innerHTML = " => " + pauseDistribution[i];
+      row.appendChild(time);
+      row.appendChild(count);
+      table.appendChild(row);
+    }
+  }
+  div.appendChild(msg);
+  div.appendChild(table);
+}
+
+
 function render() {
   if (typeof renderingStartTime === 'undefined') {
     renderingStartTime = Date.now();
+    benchmarkStartTime = renderingStartTime;
   }

   ModifyPointsSet();
@@ -359,12 +398,36 @@

   pausePlot.draw();

+  updateStats(pause);
+
   div.innerHTML =
       livePoints.count + "/" + dyingPoints.count + " " +
-      pause + "(max = " + pausePlot.maxPause + ") ms" ;
-
-  // Schedule next frame.
-  requestAnimationFrame(render);
+      pause + "(max = " + pausePlot.maxPause + ") ms " +
+      numberOfFrames + " frames";
+
+  if (renderingEndTime < benchmarkStartTime + benchmarkTimeLimit) {
+    // Schedule next frame.
+    requestAnimationFrame(render);
+  } else {
+    renderStats();
+  }
+}
+
+
+function renderForm() {
+  form = document.createElement("form");
+  form.setAttribute("action", "javascript:start()");
+  var label = document.createTextNode("Time limit in seconds ");
+  var input = document.createElement("input");
+  input.setAttribute("id", "timelimit");
+  input.setAttribute("value", "60");
+  var button = document.createElement("input");
+  button.setAttribute("type", "submit");
+  button.setAttribute("value", "Start");
+  form.appendChild(label);
+  form.appendChild(input);
+  form.appendChild(button);
+  document.body.appendChild(form);
 }


@@ -382,6 +445,11 @@
   pausePlot = new PausePlot(480, 240, 160);
 }

-
-init();
-render();
+function start() {
+  benchmarkTimeLimit = document.getElementById("timelimit").value * 1000;
+  document.body.removeChild(form);
+  init();
+  render();
+}
+
+renderForm();

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to