• Matej Knopp's avatar
    Add static_path_tessellation macrobenchmark (#131837) · 1c7e2afc
    Matej Knopp authored
    This adds a macrobenchmark representative of a real world application that uses SVG icons. The scenario of rasterizing complex paths that don't change over time does not seem to be covered by any other macrobenchmark and shows a significantly slower impeller performance compared to skia.
    
    It's actually bit problematic to measure this because on A15 the CPU load with impeller is high enough to trigger CPU frequency change. So in order to get consistent reading I had to add a spinning background thread that would keep the CPU at highest frequency.
    
    ```objc
      [NSThread detachNewThreadWithBlock:^{
        while (true) {
          pthread_yield_np();
        }
      }];
    ```
    
    ```bash
    flutter drive --profile --local-engine=ios_profile -t test_driver/run_app.dart --driver test_driver/path_tessellation_static_perf_test.dart
    ```
    
    | average_frame_build_time_millis |Time|
    |--|--|
    | Impeller | 0.46686524822695047 |
    | Skia | 0.4625749999999999 |
    | Skia - No RasterCache | 0.47173750000000086|
    
    | average_frame_rasterizer_time_millis | Time |
    |--|--|
    | Impeller | 6.654328519855595 |
    | Skia - Raster Cache |  0.2534123711340209 * |
    | Skia - No RasterCache |  0.53424375 |
    
    * Adding the `GeometryPainter` seems to have triggered the complexity threshold for raster cache.
    
    <img alt="screenshot" width="320" src="https://github.com/flutter/flutter/assets/96958/7a2f9384-b512-477b-bffa-058d4d284a41"/>
    1c7e2afc
Name
Last commit
Last update
.github Loading commit data...
.vscode Loading commit data...
bin Loading commit data...
dev Loading commit data...
examples Loading commit data...
packages Loading commit data...
.ci.yaml Loading commit data...
.cirrus.yml Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CODEOWNERS Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
CONTRIBUTING.md Loading commit data...
LICENSE Loading commit data...
PATENT_GRANT Loading commit data...
README.md Loading commit data...
TESTOWNERS Loading commit data...
analysis_options.yaml Loading commit data...
dartdoc_options.yaml Loading commit data...
flutter_console.bat Loading commit data...