22 Commits

Author SHA1 Message Date
Yegor
07772a3d23
[framework,web] add FlutterTimeline and semantics benchmarks that use it (#128366)
## FlutterTimeline

Add a new class `FlutterTimeline` that's a drop-in replacement for `Timeline` from `dart:developer`. In addition to forwarding invocations of `startSync`, `finishSync`, `timeSync`, and `instantSync` to `dart:developer`, provides the following extra methods that make is easy to collect timings for code blocks on a frame-by-frame basis:

* `debugCollect()` - aggregates timings since the last reset, or since the app launched.
* `debugReset()` - forgets all data collected since the previous reset, or since the app launched. This allows clearing data from previous frames so timings can be attributed to the current frame.
* `now` - this was enhanced so that it works on the web by calling `window.performance.now` (in `Timeline` this is a noop in Dart web compilers).
* `collectionEnabled` - a field that controls whether `FlutterTimeline` stores timings in memory. By default this is disabled to avoid unexpected overhead (although the class is designed for minimal and predictable overhead). Specific benchmarks can enable collection to report to Skia Perf.

## Semantics benchmarks

Add `BenchMaterial3Semantics` that benchmarks the cost of semantics when constructing a screen full of Material 3 widgets from nothing. It is expected that semantics will have non-trivial cost in this case, but we should strive to keep it much lower than the rendering cost. This is the case already. This benchmark shows that the cost of semantics is <10%.

Add `BenchMaterial3ScrollSemantics` that benchmarks the cost of scrolling a previously constructed screen full of Material 3 widgets. The expectation should be that semantics will have trivial cost, since we're just shifting some widgets around. As of today, the numbers are not great, with semantics taking >50% of frame time, which is what prompted this PR in the first place. As we optimize this, we want to see this number improve.
2023-06-21 21:37:02 +00:00
Michael Goderbauer
54217bd4b1
Remove unnecessary null checks in dev/benchmarks (#118840)
* Remove unnecessary null checks in dev/benchmarks

* empty
2023-01-20 04:04:11 +00:00
Kate Lovett
7e12b37111
Deprecate 2018 text theme parameters (#109817) 2022-08-22 20:00:34 +00:00
Alexandre Ardhuin
07f1c20474
add missing trailing commas in list/set/map literals (#102585) 2022-04-27 09:15:35 +02:00
Michael Goderbauer
ca2d60e8e2
Prepare more of dev for use_super_parameters (#101073) 2022-03-30 14:05:05 -07:00
Mouad Debbar
c2f6a3af91
[web] Stop using web experiments in benchmarks (#94739) 2021-12-06 10:14:06 -08:00
Riley Porter
ffbf69cccc
Ignore analyzer implict dynamic checks for js_util generic return type (#92271) 2021-10-21 10:28:02 -07:00
Ian Hickson
7b01346c5c
Enable no_default_cases lint (#91530) 2021-10-11 10:23:04 -07:00
Ian Hickson
61a0add286
Enable avoid_redundant_argument_values lint (#91409) (#91462) 2021-10-08 09:25:14 -07:00
Zachary Anderson
b9d2177da0
Revert "Enable avoid_redundant_argument_values lint (#91409)" (#91461)
This reverts commit 5fd259be244244e14ff87fee9b6a721625f952cd.
2021-10-07 21:11:07 -07:00
Ian Hickson
5fd259be24
Enable avoid_redundant_argument_values lint (#91409) 2021-10-07 20:13:02 -07:00
Darren Austin
37bc722339
Migrate dev/benchmarks/macrobenchmarks to null safety. (#85501) 2021-06-29 11:49:27 -07:00
Yegor
ccada2704c
[web] run all text layout benchmarks in CanvasKit mode (#83718) 2021-06-01 13:54:02 -07:00
Michael Goderbauer
b8a2456737
Enable library_private_types_in_public_api lint (#81578) 2021-05-10 16:26:16 -07:00
Michael Goderbauer
0f568298d8
enable use_key_in_widget_constructors lint (#77032) 2021-03-02 10:14:02 -08:00
Sam Rawlins
6ea2806b71
Remove unnecessary imports (#74382) 2021-01-27 10:59:05 -08:00
Yegor
6f8945fce6
extract engine sub-metrics; change reported metrics (#55331)
* extract engine sub-metrics; change reported metrics

- Extract sub-metrics reported by the Web engine: "preroll_frame", "apply_frame".
- Add a concept of unreported metrics: displayed on the benchmark UI, but not on the dashboard.
- Make "sceneBuildDuration" and "windowRenderDuration" unreported, which are too fine-grained. They are included in "drawFrameDuration" already.
- Report outlier ratio instead of outlier average. The ratio is more useful of the two.
2020-04-22 17:18:53 -07:00
Mouad Debbar
b0610be3b4
[web] Don't collect trace info in the color grid benchmark (#54396) 2020-04-10 13:30:15 -07:00
Yegor
29c88081b9
Collect chrome://tracing data in Web benchmarks (#53879)
Collect chrome://tracing data in Web benchmarks
2020-04-03 15:10:39 -07:00
Mouad Debbar
45a8b3db81
complete text layout benchmark (#53295) 2020-03-27 14:56:02 -07:00
Mouad Debbar
af21e74fef
[web] Write benchmarks to measure canvas-based text layout (#52434) 2020-03-24 22:10:25 -07:00
Mouad Debbar
5bb552270d
[web] Add benchmarks for text layout (#51663) 2020-03-10 18:46:03 -07:00