Repository navigation
Improve performance measurement usability #102189
Description
As a developer, I want to run some portion of my app and get information about:
- How many frames were rendered
- Average/P90/P99 build times
- Average/P90/P99 raster times
- Information about the top N worst build/raster frames
- How much time was spent in network or disk IO from dart:io
- The ability to break this down by what files/hosts were accessed and how long it took
- How much time was spent in platform channels
- The ability to break this down by channel name/method call
- GC stats:
- Total UI thread time in GC
- Total time of other thread(s) in GC
- How many GCs ran/what types
- Average/P90/P99 memory usage during the run
- Average/P90/P99 CPU usage during the run
- Average/P90/P99 GPU usage during the run
I would like to get this information with minimal impact on actual performance of my application.
A lot, but not all of this information is available in the timeline today. Some of this information is currently provided on some platforms, whereas on other platforms it is missing or only available via polling that devtools may do.
It would probably be best to start with some of our existing performance benchmarks and see what we can do to get the output to look more like this. We should also evaluate whether we can use timeline/perfetto tracing or not and how much of an impact it is having on performance as part of this bug.
/cc @gaaclarke @iskakaushik - I think this intersects with some of the work you're currently doing.
/cc @jiahaog fyi
/cc @kenzieschmoll @polina-c @jacob314 for devtools input
Activity
ueman commentedon May 10, 2022
Ideally I'd like to have this data also available in release builds, so I can integrate this data with application performance monitoring tools, like Sentry, DataDog and so on.
I'm currently experimenting with using HttpOverrides and IOOverrides to achieve this. That works quite good.
dnfield commentedon May 11, 2022
Is it that you want to test in release, or you want your release app sending back metrics for use?
ueman commentedon May 11, 2022
The latter one. I want to send back metrics for use.
marandaneto commentedon May 11, 2022
It'd be awesome if at runtime you could collect telemetry data and send it over to observability services such as sentry.io to aggregate and extract information about the performance of your app and compare it across new versions of the app, device models, brands, etc...
Rename `debugProfilePlatformChannels` to a constant that works in rel…
Rename `debugProfilePlatformChannels` to a constant that works in rel…
github-actions commentedon Feb 22, 2025
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of
flutter doctor -vand a minimal reproduction of the issue.