flutter / flutter/devtools

[FR] Make it easier to identify performance bottlenecks in app

Ouverte
#9,606 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
cost: high new feature P3 screen: performance
Langage dominant
Dart
Étoiles
1.7k
Forks
404
Merge moyen
6 j 17 h
PR mergées (30 j)
18

Description

### Description

A user is requesting a way to easily find the widget/s responsible for performance issues in their app.

The Performance Panel currently supports tracking widget [builds](https://docs.flutter.dev/tools/devtools/performance#track-widget-builds), [layouts](https://docs.flutter.dev/tools/devtools/performance#track-layouts), and [paints](https://docs.flutter.dev/tools/devtools/performance#track-paints) to help users diagnose where their app is experiencing bottlenecks.

However, if the app has high frame rates, they can experience data loss in DevTools because the perf events overflow the ring buffer before they can analyze them.

### Possible solutions

**1. Table of slowest widget builds, layouts, or paints.**

Along with displaying the data in the flame chart, we could also sort the data and display the slowest phases at the top of a table to help users quickly identify where their app is experiencing issues.

_Estimated scope: S/M (1 week - 1 month)_

**2. Disabling widgets from the performance view**

The user suggested a possible solution of disabling widgets from the performance view. This is a significantly more challenging request. Currently, the Flutter engine is responsible for emitting the build, layout, and paint events. The Dart VM Service listens to these events, and adds them to a ring buffer. The primary challenge here is communicating with the Flutter engine to not emit the events for certain widgets, either with a service extension registered on the framework, or perhaps an annotation that users can add to their widget source code.

_Estimated scope: XL (quarter+)_

----

See original request [here](https://x.com/ThomasBurkhartB/status/1990839130998116376)

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.