Mobiludvikling med Flutter · Lektion

Ydeevneprofilering

Brug Flutter's profileringsværktøjer til at identificere og løse flaskehalse i ydeevnen, så brugeroplevelsen bliver jævn og responsiv.

Lektion 2 af 411 trin

Ydeevneprofilering er en gratis Mobiludvikling med Flutter-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Mobiludvikling med Flutter, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Mobiludvikling med Flutter-kurset indeholder 4 lektioner i alt.

Hvorfor profilere ydeevnen?

Optimering af din apps ydeevne er afgørende for en jævn og responsiv brugeroplevelse. Ydeevneprofilering er processen med at analysere din apps ressourceforbrug for at identificere flaskehalse.

En langsom eller hakkende app kan frustrere brugerne og føre til afinstallationer. Vi ønsker, at vores Flutter-apps kører med konstant 60 billeder pr. sekund (fps) eller 120 fps på understøttede enheder, så de føles flydende.

Mød Flutter DevTools

Flutter DevTools er en samling fejlfindings- og ydeevneværktøjer til Flutter og Dart. Det er dit vigtigste værktøj til at forstå, hvad der foregår under motorhjelmen i din app.

Du kan starte DevTools fra dit IDE (f.eks. VS Code eller Android Studio) eller fra kommandolinjen, mens din Flutter-app kører. Det åbnes i en webbrowser.

Fanen Ydeevne

DevTools' fane Ydeevne viser en detaljeret tidslinje for din apps UI- og GPU-gengivelse. Den hjælper dig med at visualisere tiderne for billedgengivelse og identificere, hvor din app måske mister billeder.

  • UI-tråd: Håndterer layout, tegning og animationer.
  • GPU-tråd: Gengiver pixels på skærmen.
  • En velfungerende app bør have begge tråde til at færdiggøre arbejdet inden for 16 ms ved 60 fps.

CPU-profiler: Find langsom kode

Den CPU-profiler, der findes i DevTools, hjælper dig med at finde metoder, der bruger meget CPU-tid. Det er vigtigt for at identificere beregningstunge operationer, som kan blokere UI-tråden.

Se efter funktioner med lange udførelsestider i kaldetræet. Lad os se på et eksempel på en tung opgave:

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  void _performHeavyCalculation() {
    int sum = 0;
    // A large loop to simulate a CPU-intensive task
    for (int i = 0; i < 100000000; i++) {
      sum += i;
    }
    print('Sum: $sum'); // Prevent optimization
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('CPU Profiler Demo')),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              _performHeavyCalculation();
              print('Heavy calculation finished!');
            },
            child: const Text('Run Heavy Task'),
          ),
        ),
      ),
    );
  }
}

Analyse af widget-genopbygninger

Unødvendige widget-genopbygninger er en almindelig årsag til ydeevneproblemer. Hver gang en widget bygges igen, evaluerer Flutter dens build-metode på ny, hvilket kan være ressourcekrævende.

DevTools giver dig mulighed for at aktivere "Highlight Repaints" og "Show Rebuild Counts" for visuelt at identificere widgets, der bygges igen oftere end nødvendigt. Det hjælper dig med at finde områder, der kan optimeres, f.eks. ved at bruge const-widgets eller begrænse antallet af kald til setState.

Fanen Hukommelse: Lækager og forbrug

Fanen Hukommelse i DevTools hjælper dig med at overvåge din apps hukommelsesforbrug. For stort hukommelsesforbrug kan føre til nedbrud eller en langsom oplevelse, især på enheder med begrænset RAM.

  • Identificér potentielle hukommelseslækager, hvor objekter ikke længere er nødvendige, men stadig holdes i hukommelsen.
  • Analysér heap-øjebliksbilledet for at se, hvilke objekter der bruger mest hukommelse.
  • Følg ændringer i hukommelsen over tid for at opdage tendenser.

Diagnosticering af UI-hakken med billeddiagrammet

UI-hakken henviser til mærkbare pauser eller hakken i din apps animationer eller rulning. Billeddiagrammet på fanen Ydeevne er afgørende for at diagnosticere dette.

Hver søjle repræsenterer et billede. Hvis en søjle er højere end 16 ms (ved 60 fps), betyder det, at billedet tog for lang tid at gengive, hvilket giver en synlig hakken. Diagrammet opdeler tiden i UI- og GPU-tråde, så du kan forstå årsagen til forsinkelsen.

Almindelige ydeevneflaskehalse

Under profilering kan du støde på disse almindelige årsager:

  • Tunge beregninger på UI-tråden.
  • For mange widget-genopbygninger på grund af uhensigtsmæssig tilstandshåndtering.
  • Ueffektiv brug af store lister (f.eks. ved ikke at bruge ListView.builder).
  • Indlæsning af uoptimerede billeder eller for mange billeder på samme tid.
  • Komplekse layouts, der fører til dybe widget-træer.

Bedste praksis for ydeevne

Her er nogle tips til at skrive effektiv Flutter-kode:

  • Brug const-widgets, når det er muligt, for at forhindre unødvendige genopbygninger.
  • Begræns omfanget af kald til setState, så kun de nødvendige dele bygges igen.
  • Brug ListView.builder til lange lister for at gengive elementer effektivt.
  • Gem billeder og andre aktiver i en cache.
  • Flyt tunge beregninger til isolates eller baggrundstråde.

Videnstjek om profilering

DevTools har effektive funktioner, der hjælper med at optimere din Flutter-app. Hvilke af følgende problemer kan Flutter DevTools hjælpe dig med at identificere og diagnosticere?

Opsummering: Få styr på ydeevnen

Godt gået! Du har lært det grundlæggende i ydeevneprofilering i Flutter.

  • Flutter DevTools er dit foretrukne værktøj til ydeevneanalyse.
  • Brug fanen Ydeevne til at finde UI-hakken og mistede billeder.
  • CPU-profiler hjælper med at finde langsom kode.
  • Identificér hukommelsesproblemer med fanen Hukommelse.
  • Brug bedste praksis som const-widgets og effektiv gengivelse af lister for at bygge flydende apps.

Bliv ved med at øve dig med DevTools, så du kan bygge yderst optimerede Flutter-applikationer!

Gratis at komme i gang

Lær Dart med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
22
Lektioner
88

Ofte stillede spørgsmål

Er lektionen “Ydeevneprofilering” gratis?

Ja — alle 3 lektioner i læringssporet Mobiludvikling med Flutter, inklusive “Ydeevneprofilering”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Mobiludvikling med Flutter-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Ydeevneprofilering”?

Brug Flutter's profileringsværktøjer til at identificere og løse flaskehalse i ydeevnen, så brugeroplevelsen bliver jævn og responsiv. Du øver dig i Mobiludvikling med Flutter med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Mobiludvikling med Flutter?

Der kræves ingen tidligere erfaring. Mobiludvikling med Flutter på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Ydeevneprofilering”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Mobiludvikling med Flutter-lektion?

Ja. Alle Mobiludvikling med Flutter-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. App Store og Play Store
  2. Ydeevneprofilering
  3. CI/CD til Flutter
  4. Optimering af appstørrelse og builds
← Tilbage til Mobiludvikling med Flutter