Title: [290664] trunk/PerformanceTests
Revision
290664
Author
[email protected]
Date
2022-03-01 11:38:24 -0800 (Tue, 01 Mar 2022)

Log Message

Fix Speedometer's setTimeout throttling issue
https://bugs.webkit.org/show_bug.cgi?id=237303
rdar://89444976

Reviewed by Geoffrey Garen.

Speedometer is driving each test via setTimeout. Because we are using setTimeout to
measure async time in each subtest of Speedometer, our measurement included 4ms
throttle introduced due to nested setTimeout. This is happening in the test
harness (not test itself), and the intention of this test harness is not measuring
the throttle time. In this patch, we fix this nesting level propagation by inserting
window.requestAnimationFrame for each test run and BenchmarkRunner.prototype.waitForElement
so that we can reset nesting level count of setTimeout, which prevents the rendering
engine to insert 4ms throttle.

Since this affects on the score of async measurement, we bump the version number from 2.0 to 2.1

* Speedometer/InteractiveRunner.html:
* Speedometer/index.html:
* Speedometer/resources/benchmark-runner.js:
(resolveIfReady):
(BenchmarkRunner.prototype.waitForElement):
(BenchmarkRunner.prototype._runTest):
* Speedometer/resources/todomvc/architecture-examples/angular/README.md:
* Speedometer/resources/todomvc/architecture-examples/angularjs/readme.md:
* Speedometer/resources/todomvc/architecture-examples/backbone/readme.md:
* Speedometer/resources/todomvc/architecture-examples/emberjs/README.md:
* Speedometer/resources/todomvc/architecture-examples/preact/README.md:
* Speedometer/resources/todomvc/architecture-examples/react-redux/README.md:
* Speedometer/resources/todomvc/architecture-examples/react/README.md:
* Speedometer/resources/todomvc/architecture-examples/vuejs-cli/README.md:
* Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/README.md:
* Speedometer/resources/todomvc/vanilla-examples/es2015/README.md:
* Speedometer/resources/todomvc/vanilla-examples/vanillajs/readme.md:

Modified Paths

Diff

Modified: trunk/PerformanceTests/ChangeLog (290663 => 290664)


--- trunk/PerformanceTests/ChangeLog	2022-03-01 19:34:43 UTC (rev 290663)
+++ trunk/PerformanceTests/ChangeLog	2022-03-01 19:38:24 UTC (rev 290664)
@@ -1,3 +1,40 @@
+2022-03-01  Yusuke Suzuki  <[email protected]>
+
+        Fix Speedometer's setTimeout throttling issue
+        https://bugs.webkit.org/show_bug.cgi?id=237303
+        rdar://89444976
+
+        Reviewed by Geoffrey Garen.
+
+        Speedometer is driving each test via setTimeout. Because we are using setTimeout to
+        measure async time in each subtest of Speedometer, our measurement included 4ms
+        throttle introduced due to nested setTimeout. This is happening in the test
+        harness (not test itself), and the intention of this test harness is not measuring
+        the throttle time. In this patch, we fix this nesting level propagation by inserting
+        window.requestAnimationFrame for each test run and BenchmarkRunner.prototype.waitForElement
+        so that we can reset nesting level count of setTimeout, which prevents the rendering
+        engine to insert 4ms throttle.
+
+        Since this affects on the score of async measurement, we bump the version number from 2.0 to 2.1
+
+        * Speedometer/InteractiveRunner.html:
+        * Speedometer/index.html:
+        * Speedometer/resources/benchmark-runner.js:
+        (resolveIfReady):
+        (BenchmarkRunner.prototype.waitForElement):
+        (BenchmarkRunner.prototype._runTest):
+        * Speedometer/resources/todomvc/architecture-examples/angular/README.md:
+        * Speedometer/resources/todomvc/architecture-examples/angularjs/readme.md:
+        * Speedometer/resources/todomvc/architecture-examples/backbone/readme.md:
+        * Speedometer/resources/todomvc/architecture-examples/emberjs/README.md:
+        * Speedometer/resources/todomvc/architecture-examples/preact/README.md:
+        * Speedometer/resources/todomvc/architecture-examples/react-redux/README.md:
+        * Speedometer/resources/todomvc/architecture-examples/react/README.md:
+        * Speedometer/resources/todomvc/architecture-examples/vuejs-cli/README.md:
+        * Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/README.md:
+        * Speedometer/resources/todomvc/vanilla-examples/es2015/README.md:
+        * Speedometer/resources/todomvc/vanilla-examples/vanillajs/readme.md:
+
 2022-02-18  Robert Jenner  <[email protected]>
 
         Unreviewed, reverting r290149.

Modified: trunk/PerformanceTests/Speedometer/InteractiveRunner.html (290663 => 290664)


--- trunk/PerformanceTests/Speedometer/InteractiveRunner.html	2022-03-01 19:34:43 UTC (rev 290663)
+++ trunk/PerformanceTests/Speedometer/InteractiveRunner.html	2022-03-01 19:38:24 UTC (rev 290664)
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <html>
 <head>
-<title>Speedometer 2.0 Interactive Runner</title>
+<title>Speedometer 2.1 Interactive Runner</title>
 <script src="" defer></script>
 <script src="" defer></script>
 <style>

Modified: trunk/PerformanceTests/Speedometer/index.html (290663 => 290664)


--- trunk/PerformanceTests/Speedometer/index.html	2022-03-01 19:34:43 UTC (rev 290663)
+++ trunk/PerformanceTests/Speedometer/index.html	2022-03-01 19:38:24 UTC (rev 290664)
@@ -2,7 +2,7 @@
 <html>
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-    <title>Speedometer 2.0</title>
+    <title>Speedometer 2.1</title>
     <link rel="stylesheet" href=""
     <script src="" defer></script>
     <script src="" defer></script>
@@ -60,7 +60,7 @@
     </section>
 
     <section id="about">
-        <h1>About Speedometer 2.0</h1>
+        <h1>About Speedometer 2.1</h1>
 
         <p>Speedometer tests a browser's Web app responsiveness by timing simulated user interactions.</p>
 

Modified: trunk/PerformanceTests/Speedometer/resources/benchmark-runner.js (290663 => 290664)


--- trunk/PerformanceTests/Speedometer/resources/benchmark-runner.js	2022-03-01 19:34:43 UTC (rev 290663)
+++ trunk/PerformanceTests/Speedometer/resources/benchmark-runner.js	2022-03-01 19:38:24 UTC (rev 290664)
@@ -49,8 +49,12 @@
 
     function resolveIfReady() {
         var element = contentDocument.querySelector(selector);
-        if (element)
-            return promise.resolve(element);
+        if (element) {
+            window.requestAnimationFrame(function () {
+                return promise.resolve(element);
+            });
+            return;
+        }
         setTimeout(resolveIfReady, 50);
     }
 
@@ -142,7 +146,9 @@
         var endTime = now();
         self._frame.contentWindow._unusedHeightValue = height; // Prevent dead code elimination.
         self._writeMark(suite.name + '.' + test.name + '-async-end');
-        callback(syncTime, endTime - startTime, height);
+        window.requestAnimationFrame(function () {
+            callback(syncTime, endTime - startTime, height);
+        });
     }, 0);
 }
 

Modified: trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/README.md (290663 => 290664)


--- trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/README.md	2022-03-01 19:34:43 UTC (rev 290663)
+++ trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/README.md	2022-03-01 19:38:24 UTC (rev 290664)
@@ -1,4 +1,4 @@
-# Speedometer 2.0: Angular 4 TodoMVC example
+# Speedometer 2.1: Angular 4 TodoMVC example
 
 ## Test locally
 

Modified: trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/readme.md (290663 => 290664)


--- trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/readme.md	2022-03-01 19:34:43 UTC (rev 290663)
+++ trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/readme.md	2022-03-01 19:38:24 UTC (rev 290664)
@@ -1,4 +1,4 @@
-# Speedometer 2.0: Angular 1.6.5 TodoMVC example
+# Speedometer 2.1: Angular 1.6.5 TodoMVC example
 
 ## Test locally
 

Modified: trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/readme.md (290663 => 290664)


--- trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/readme.md	2022-03-01 19:34:43 UTC (rev 290663)
+++ trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/readme.md	2022-03-01 19:38:24 UTC (rev 290664)
@@ -1,4 +1,4 @@
-# Speedometer 2.0: Backbone.js TodoMVC example
+# Speedometer 2.1: Backbone.js TodoMVC example
 
 ## Test locally
 

Modified: trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/README.md (290663 => 290664)


--- trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/README.md	2022-03-01 19:34:43 UTC (rev 290663)
+++ trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/README.md	2022-03-01 19:38:24 UTC (rev 290664)
@@ -1,4 +1,4 @@
-# Speedometer 2.0: Ember.js TodoMVC example
+# Speedometer 2.1: Ember.js TodoMVC example
 
 ## Test locally
 

Modified: trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/preact/README.md (290663 => 290664)


--- trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/preact/README.md	2022-03-01 19:34:43 UTC (rev 290663)
+++ trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/preact/README.md	2022-03-01 19:38:24 UTC (rev 290664)
@@ -1,4 +1,4 @@
-# Speedometer 2.0: Preact TodoMVC example
+# Speedometer 2.1: Preact TodoMVC example
 
 ## Test locally
 

Modified: trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react/README.md (290663 => 290664)


--- trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react/README.md	2022-03-01 19:34:43 UTC (rev 290663)
+++ trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react/README.md	2022-03-01 19:38:24 UTC (rev 290664)
@@ -1,4 +1,4 @@
-# Speedometer 2.0: React TodoMVC example
+# Speedometer 2.1: React TodoMVC example
 
 ## Test locally
 

Modified: trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react-redux/README.md (290663 => 290664)


--- trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react-redux/README.md	2022-03-01 19:34:43 UTC (rev 290663)
+++ trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react-redux/README.md	2022-03-01 19:38:24 UTC (rev 290664)
@@ -1,4 +1,4 @@
-# Speedometer 2.0: React Redux TodoMVC example
+# Speedometer 2.1: React Redux TodoMVC example
 
 ## Test locally
 

Modified: trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/vuejs-cli/README.md (290663 => 290664)


--- trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/vuejs-cli/README.md	2022-03-01 19:34:43 UTC (rev 290663)
+++ trunk/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/vuejs-cli/README.md	2022-03-01 19:38:24 UTC (rev 290664)
@@ -1,4 +1,4 @@
-# Speedometer 2.0: Vue.js TodoMVC example
+# Speedometer 2.1: Vue.js TodoMVC example
 
 ## Test locally
 

Modified: trunk/PerformanceTests/Speedometer/resources/todomvc/vanilla-examples/es2015/README.md (290663 => 290664)


--- trunk/PerformanceTests/Speedometer/resources/todomvc/vanilla-examples/es2015/README.md	2022-03-01 19:34:43 UTC (rev 290663)
+++ trunk/PerformanceTests/Speedometer/resources/todomvc/vanilla-examples/es2015/README.md	2022-03-01 19:38:24 UTC (rev 290664)
@@ -1,4 +1,4 @@
-# Speedometer 2.0: ES2015 TodoMVC example
+# Speedometer 2.1: ES2015 TodoMVC example
 
 ## Test locally
 

Modified: trunk/PerformanceTests/Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/README.md (290663 => 290664)


--- trunk/PerformanceTests/Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/README.md	2022-03-01 19:34:43 UTC (rev 290663)
+++ trunk/PerformanceTests/Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/README.md	2022-03-01 19:38:24 UTC (rev 290664)
@@ -1,4 +1,4 @@
-# Speedometer 2.0: ES2015 + Babel + Webpack TodoMVC example
+# Speedometer 2.1: ES2015 + Babel + Webpack TodoMVC example
 
 ## Test locally
 

Modified: trunk/PerformanceTests/Speedometer/resources/todomvc/vanilla-examples/vanillajs/readme.md (290663 => 290664)


--- trunk/PerformanceTests/Speedometer/resources/todomvc/vanilla-examples/vanillajs/readme.md	2022-03-01 19:34:43 UTC (rev 290663)
+++ trunk/PerformanceTests/Speedometer/resources/todomvc/vanilla-examples/vanillajs/readme.md	2022-03-01 19:38:24 UTC (rev 290664)
@@ -1,4 +1,4 @@
-# Speedometer 2.0: Vanilla _javascript_ TodoMVC example
+# Speedometer 2.1: Vanilla _javascript_ TodoMVC example
 
 ## Test locally
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to