Refined power management in SunSpider 1.0.2
authorggaren@apple.com <ggaren@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 8 Oct 2013 22:40:26 +0000 (22:40 +0000)
committerggaren@apple.com <ggaren@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 8 Oct 2013 22:40:26 +0000 (22:40 +0000)
https://bugs.webkit.org/show_bug.cgi?id=122525

Reviewed by Gavin Barraclough.

Sync'd sunspider-1.0.2 to PerformanceTests/SunSpider/hosted/sunspider-1.0.2.

* perf/sunspider-1.0.2/sunspider-1.0.2/driver.html:
* perf/sunspider-1.0.2/sunspider-1.0.2/sunspider-test-contents.js:
* perf/sunspider-1.0.2/sunspider.css:
(#frameparent):
(#countdown):

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

Websites/webkit.org/ChangeLog
Websites/webkit.org/perf/sunspider-1.0.2/sunspider-1.0.2/driver.html
Websites/webkit.org/perf/sunspider-1.0.2/sunspider-1.0.2/sunspider-test-contents.js
Websites/webkit.org/perf/sunspider-1.0.2/sunspider.css

index 375872a..fa57994 100644 (file)
@@ -1,3 +1,18 @@
+2013-10-08  Geoffrey Garen  <ggaren@apple.com>
+
+        Refined power management in SunSpider 1.0.2
+        https://bugs.webkit.org/show_bug.cgi?id=122525
+
+        Reviewed by Gavin Barraclough.
+
+        Sync'd sunspider-1.0.2 to PerformanceTests/SunSpider/hosted/sunspider-1.0.2.
+
+        * perf/sunspider-1.0.2/sunspider-1.0.2/driver.html:
+        * perf/sunspider-1.0.2/sunspider-1.0.2/sunspider-test-contents.js:
+        * perf/sunspider-1.0.2/sunspider.css:
+        (#frameparent):
+        (#countdown):
+
 2013-10-02  Geoffrey Garen  <ggaren@apple.com>
 
         Sync'd sunspider-1.0.2 to PerformanceTests/SunSpider/hosted/sunspider-1.0.2.
index cf8d75a..8507de4 100644 (file)
@@ -44,6 +44,7 @@
 var testIndex = -1;
 var currentRepeat = -1;
 var repeatCount = 10;
+var warmupMS = 8;
 
 var output = [];
 output.length = repeatCount;
@@ -51,6 +52,16 @@ for (var i = 0; i < output.length; i++) {
     output[i] = {};
 }
 
+function warmup()
+{
+    for (var start = new Date; new Date - start < warmupMS; ) {
+        for (var i = 0; i < 100; ++i) {
+            if (Math.atan(Math.acos(Math.asin(Math.random()))) > 4) // Always false.
+                return;
+        }
+    }
+}
+
 function start() 
 {
     window.setTimeout(next, 128);
@@ -62,15 +73,23 @@ function next()
     document.getElementById("frameparent").innerHTML = "<iframe id='testframe'>";
     var testFrame = document.getElementById("testframe");
     if (++testIndex < tests.length) {
-        window.setTimeout(next, 0);
+        // Warm up the CPU a little bit, in case power management clocked it down
+        // or put it to sleep. We're trying to strike a balance here: do enough
+        // work so that all browsers see the CPU at an equal clock rate, but
+        // not so much work that we hide performance problems caused by overly
+        // aggressive power management.
+        warmup();
 
         testFrame.contentDocument.open();
         testFrame.contentDocument.write(testContents[testIndex]);
         testFrame.contentDocument.close();
-    } else if (++currentRepeat < repeatCount) { 
-        window.setTimeout(next, 128);
 
+        window.setTimeout(next, 0);
+    } else if (++currentRepeat < repeatCount) { 
+        document.getElementById("countdown").innerHTML = repeatCount - currentRepeat;
         testIndex = -1;
+
+        window.setTimeout(next, 128);
     } else {
         finish();
     }
@@ -105,8 +124,8 @@ function finish()
 
 </script>
 
-<div id="frameparent">
-</div>
+<h3 id="countdown">warmup</h3>
+<div id="frameparent"></div>
 
 </body>
 </html>
index 7713635..eb44559 100644 (file)
@@ -30,27 +30,18 @@ var testContents = [ "<!DOCTYPE html>\n\
 \n\
 <title>SunSpider 3d-cube</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>3d-cube</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -457,27 +448,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider 3d-morph</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>3d-morph</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -592,27 +574,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider 3d-raytrace</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>3d-raytrace</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -1111,27 +1084,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider access-binary-trees</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>access-binary-trees</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -1236,27 +1200,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider access-fannkuch</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>access-fannkuch</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -1378,27 +1333,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider access-nbody</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>access-nbody</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -1624,27 +1570,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider access-nsieve</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>access-nsieve</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -1742,27 +1679,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider bitops-3bit-bits-in-byte</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>bitops-3bit-bits-in-byte</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -1854,27 +1782,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider bitops-bits-in-byte</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>bitops-bits-in-byte</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -1956,27 +1875,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider bitops-bitwise-and</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>bitops-bitwise-and</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -2063,27 +1973,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider bitops-nsieve-bits</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>bitops-nsieve-bits</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -2177,27 +2078,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider controlflow-recursive</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>controlflow-recursive</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -2281,27 +2173,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider crypto-aes</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>crypto-aes</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -2779,27 +2662,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider crypto-md5</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>crypto-md5</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -3143,27 +3017,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider crypto-sha1</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>crypto-sha1</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -3443,27 +3308,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider date-format-tofte</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>date-format-tofte</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -3816,27 +3672,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider date-format-xparb</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>date-format-xparb</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -4308,27 +4155,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider math-cordic</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>math-cordic</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -4486,27 +4324,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider math-partial-sums</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>math-partial-sums</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -4603,27 +4432,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider math-spectral-norm</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>math-spectral-norm</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -4734,27 +4554,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider regexp-dna</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>regexp-dna</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -6527,27 +6338,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider string-base64</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>string-base64</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -6736,27 +6538,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider string-fasta</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>string-fasta</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -6898,27 +6691,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider string-tagcloud</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>string-tagcloud</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -7241,27 +7025,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider string-unpack-code</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>string-unpack-code</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
@@ -7394,27 +7169,18 @@ record(_sunSpiderInterval);\n\
 \n\
 <title>SunSpider string-validate-input</title>\n\
 <link rel=\"stylesheet\" href=\"../sunspider.css\">\n\
-<style>\n\
-#countdown {\n\
-    font-size: 128px; \n\
-    text-align: center;\n\
-}\n\
-</style>\n\
 </head>\n\
 \n\
 <body>\n\
-<h3 id=\"countdown\"></h3>\n\
+<h3>string-validate-input</h3>\n\
+<div id=\"console\">\n\
+</div>\n\
 <script>\n\
-if (window.parent) {\n\
-    document.getElementById(\"countdown\").innerHTML =\n\
-        window.parent.currentRepeat < 0\n\
-            ? \"warmup\"\n\
-            : (window.parent.repeatCount - window.parent.currentRepeat);\n\
-}\n\
-\n\
 function record(time) {\n\
-    if (window.parent)\n\
+    document.getElementById(\"console\").innerHTML = time + \"ms\";\n\
+    if (window.parent) {\n\
         parent.recordResult(time);\n\
+    }\n\
 }\n\
 \n\
 window.onerror = function(e) {\n\
index c91a103..b423230 100644 (file)
@@ -29,3 +29,13 @@ dd { margin-bottom: 1em; margin-top: 0.5em }
         padding-right: 20px;
         margin-bottom: -40px; 
         font-size: 3em }
+
+#frameparent { visibility: hidden; }
+
+#countdown { margin-top: 20px;
+             padding-top: 150px;
+             width: 80%;
+             height: 350px;
+             border: 2px solid #360D6B;
+             font-size: 128px; 
+             text-align: center; }