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