flutter / flutter/devtools

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

Offen
#9,606 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
cost: high new feature P3 screen: performance
Vorherrschende Sprache
Dart
Sterne
1.7k
Forks
404
Ø Merge
6 T. 17 Std.
Gemergte PRs (30 T.)
18

Beschreibung

### 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)

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Start with the Performance Panel's existing tracking for widget builds, layouts, and paints, then trace how Flutter engine events reach the Dart VM Service ring buffer. The issue presents two alternatives with very different scopes, so completion criteria and an implementation entry point must be agreed before work can begin.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
dart
Bereich
performance, tooling
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Ruhig
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.