1. 29 Jun, 2023 1 commit
    • Jackson Gardner's avatar
      Skwasm benchmarks. (#129681) · 1b887c72
      Jackson Gardner authored
      This enables benchmarks for the Skwasm renderer, compiled with
      dart2wasm.
      
      Platform views aren't supported in Skwasm yet, so we are skipping those
      benchmarks for now.
      1b887c72
  2. 21 Jun, 2023 1 commit
    • Yegor's avatar
      [framework,web] add FlutterTimeline and semantics benchmarks that use it (#128366) · 07772a3d
      Yegor authored
      ## 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.
      07772a3d
  3. 15 Jun, 2023 1 commit
  4. 08 Jun, 2023 1 commit
  5. 31 May, 2023 1 commit
    • Jackson Gardner's avatar
      Improve web benchmarks measurements (#127900) · e8f4d803
      Jackson Gardner authored
      By default, the browser fuzzes the timer APIs such that they have a granularity of approximately 100 microseconds (this is due to Spectre mitigation techniques). However, many of the thing we are trying to measure actually have a much finer granularity than 100 microseconds. As a result, many of our benchmarks are extremely noisy and don't provide accurate data.
      
      By serving the initial script files with the `Cross-Origin-Opener-Policy: same-origin` and `Cross-Origin-Embedder-Policy: require-corp` HTTP headers, the browser runs the benchmarks in a `crossOriginIsolated` context, which restores the fine granularity of APIs such as `performance.now()` to microsecond precision.
      
      Also, we were considering anything an outlier that was more than one standard deviation away from the mean. In a normal distribution, that means we are only capturing 68% of the data and the rest are considered outliers. This is not ideal. Doing two standard deviations away captures 95% of the data, and the outliers are in the remaining 5%, which seems much more reasonable.
      e8f4d803
  6. 26 May, 2023 1 commit
  7. 24 May, 2023 1 commit
  8. 19 May, 2023 2 commits
  9. 18 May, 2023 1 commit
  10. 15 May, 2023 1 commit
  11. 05 May, 2023 1 commit
  12. 24 Apr, 2023 1 commit
  13. 11 Apr, 2023 1 commit
  14. 31 Mar, 2023 1 commit
  15. 23 Mar, 2023 1 commit
  16. 22 Mar, 2023 1 commit
  17. 23 Feb, 2023 1 commit
  18. 18 Feb, 2023 1 commit
  19. 02 Feb, 2023 1 commit
  20. 27 Jan, 2023 1 commit
  21. 26 Jan, 2023 1 commit
    • Todd Volkert's avatar
      Add more flexible image API (#118966) · b319938e
      Todd Volkert authored
      This updates the framework to provide higher level wrappers around ui.instantiateImageCodecWithSize(). Functionally, this doesn't change anything (other than deprecating the older loadBuffer() method in favor of loadImage()), but it sets the stage for a simpler change that will allow us to provide a more flexible way to load sized images.
      
      #118543
      b319938e
  22. 20 Jan, 2023 1 commit
  23. 20 Dec, 2022 1 commit
  24. 11 Dec, 2022 1 commit
  25. 29 Nov, 2022 1 commit
  26. 06 Sep, 2022 1 commit
  27. 22 Aug, 2022 1 commit
  28. 28 Jul, 2022 1 commit
  29. 20 Jul, 2022 1 commit
  30. 14 Jul, 2022 1 commit
  31. 29 Jun, 2022 1 commit
  32. 27 May, 2022 1 commit
  33. 26 May, 2022 1 commit
  34. 13 May, 2022 1 commit
  35. 27 Apr, 2022 1 commit
  36. 26 Apr, 2022 1 commit
  37. 14 Apr, 2022 1 commit
  38. 09 Apr, 2022 1 commit
  39. 08 Apr, 2022 1 commit