Increase the nesting threshold before which setTimeout(..., <4ms) start being clamped, from 5 to 15. setTimeout(..., 0) is commonly used to break down long Javascript tasks and let other internal tasks run, which prevents the browser from hanging. setTimeouts and setIntervals with an interval < 4ms are not clamped as aggressively as they were before. This improves short horizon performance, but websites abusing the API will still eventually have their set setTimeouts clamped
setTimeout is a well established and mature API. This change poses a risk of breaking websites and tests that rely on the current timing caused by clamping and the subtle task ordering that it entails. As an example, this change breaks assumptions about the ordering between setTimeout(0) and unrelated tasks in at least one case in Chrome tests (crbug.com/1302309). On the flip side, the implementation in Chrome is already non compliant (crbug.com/1108877). There's also a similar experiment on beta that is ongoing (crbug.com/1263190). Devs can use chrome://flags#unthrottled-nested-timeout to test their sites for compatibility issues.
Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications?
setTimeout() and setInterval() have an associated trace event in DevTools. https://developer.chrome.com/docs/devtools/evaluate-performance/performance-reference/
Chrome for desktop: | 108 |
Chrome for Android: | 108 |
Android Webview | 108 |
I'm wondering if we understand the constituent test in Speedometer (or the harness) that is favouring Safari's out-of-spec behaviour?
Speedometer seems like the key motivator here, rather than public content
I'd support finching this on for Stable for some releases while we get resolution on fixing the benchmark.
Thanks for taking the time to discuss this.I'm wondering if we understand the constituent test in Speedometer (or the harness) that is favouring Safari's out-of-spec behaviour?There's some context in crbug.com/1297550 and in speedometer2.1 release notes; Speedometer 2.1 hopefully fixes the benchmark to mitigate the impact of throttling setTimeout(0) (in local experiment, it does reduce improvements we can get with this change).
Speedometer seems like the key motivator here, rather than public contentCorrect. I think Speedometer2.0 is the main motivator to shipping this in a timely manner. +sky@ who has been championing moving forward with this change.
Ideally we can prove making this change has no negative impact on metrics we care about.Another (long-term) benefit is perhaps to move away from the spec-mendated threshold (which is somewhat arbitrary) and hopefully take it away from the spec. A hard-to-prove benefit of removing the 4ms clamping is to match more closely the devs intent when they write setTimeout(0), and give the browser more leeway in implementing a throttling policy.I'd support finching this on for Stable for some releases while we get resolution on fixing the benchmark.I'm experimenting on M107 (with nesting threshold = 15) and will ramp up to 1% Stable soon.(We also experimented with Stable 1% on M104-105 for a different value (nesting = 100), which showed no regression on Windows / MacOs, but regressed startup time by 0.5% at the median on Android).If finching for one milestone is enough to confirm no regression (from a metrics perspective, I believe it's enough to get statistically significant data), I'm hoping we can optimistically ship on M108 through a waterfall roll-out. Otherwise, maybe we can delay shipping 1+ milestone.
Another option we discussed is to ship as-is on desktop only (and figure out Android later), but I feel like this creates a more inconsistent platform.
Is that a very new change? Is there a reason for us to continue to look at (or cite) 2.0 when 2.1 is live?
What's the residual delta now that 2.1 is available to test against?
Presumably the downside of this change is in power/battery? Are there other impacts we're looking at?
Is that a very new change? Is there a reason for us to continue to look at (or cite) 2.0 when 2.1 is live?I think that happened in August. sky@ or +hpayer@ might be able to answer this.
Hannes Payer | | V8 | | Google Germany GmbH | | Erika-Mann Str. 33, 80636 München |
Geschäftsführer: Paul Manicle, Liana Sebastian
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Diese E-Mail ist vertraulich. Falls Sie diese fälschlicherweise erhalten haben sollten, leiten Sie diese bitte nicht an jemand anderes weiter, löschen Sie alle Kopien und Anhänge davon und lassen Sie mich bitte wissen, dass die E-Mail an die falsche Person gesendet wurde.
This e-mail is confidential. If you received this communication by mistake, please don't forward it to anyone else, please erase all copies and attachments, and please let me know that it has gone to the wrong person.
2.1 is the new version. We can ignore 2.0.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALoDvsZaOO4ksGXnVxgw8Zv1_modDWQWYMurYjMfs8UX0BCUUA%40mail.gmail.com.
Sounds good - should we consider this Intent withdrawn for now?