Mobilutvikling med Flutter · leksjon

Ytelsesprofilering

Bruk Flutter-verktøyene for profilering til å identifisere og løse ytelsesflaskehalser, slik at brukeropplevelsen blir jevn og responsiv.

Leksjon 2 av 411 trinn

Ytelsesprofilering er en gratis leksjon i Mobilutvikling med Flutter på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Mobilutvikling med Flutter, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Mobilutvikling med Flutter inneholder totalt 4 leksjoner.

Hvorfor profilere ytelsen?

Optimalisering av appens ytelse er avgjørende for en jevn og responsiv brukeropplevelse. Ytelsesprofilering er prosessen med å analysere appens ressursbruk for å identifisere flaskehalser.

En treg app eller en app som hakker, kan frustrere brukerne og føre til avinstalleringer. Målet er at Flutter-appene våre skal kjøre med jevne 60 bilder per sekund (fps), eller 120 fps på enheter som støtter det, slik at de føles flytende.

Møt Flutter DevTools

Flutter DevTools er en samling feilsøkings- og ytelsesverktøy for Flutter og Dart. Det er Deres viktigste hjelpemiddel for å forstå hva som skjer under panseret i appen.

De kan starte DevTools fra IDE-en (for eksempel VS Code eller Android Studio) eller fra kommandolinjen mens Flutter-appen kjører. Verktøyet åpnes i en nettleser.

Ytelsesfanen

DevTools-fanen Performance viser en detaljert tidslinje for appens UI- og GPU-gjengivelse. Den hjelper Dem med å visualisere gjengivelsestidene for bilder og identifisere hvor appen kan miste bilder.

  • UI-tråd: Håndterer layout, tegning og animasjoner.
  • GPU-tråd: Gjengir pikslene på skjermen.
  • En velfungerende app bør få begge trådene til å fullføre arbeidet innen 16 ms for 60 fps.

CPU-profiler: Finn treg kode

CPU Profiler i DevTools hjelper Dem med å finne metoder som bruker mye CPU-tid. Dette er viktig for å identifisere kostbare beregninger som kan blokkere UI-tråden.

Se etter funksjoner med lang kjøretid i kalltreet. La oss se på et eksempel på en krevende oppgave:

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'),
          ),
        ),
      ),
    );
  }
}

Analysere gjenoppbygging av widgeter

Unødvendig gjenoppbygging av widgeter er en vanlig kilde til ytelsesproblemer. Hver gang en widget bygges opp på nytt, evaluerer Flutter build-metoden på nytt, noe som kan være kostbart.

DevTools lar Dem aktivere "Highlight Repaints" og "Show Rebuild Counts" for visuelt å identifisere widgeter som bygges opp på nytt oftere enn de bør. Dette hjelper Dem med å finne områder som kan optimaliseres, for eksempel ved å bruke const-widgeter eller redusere antallet kall til setState.

Minnefanen: Lekkasjer og bruk

Memory-fanen i DevTools hjelper Dem med å overvåke appens minneforbruk. Overdreven minnebruk kan føre til krasj eller en treg opplevelse, særlig på enheter med begrenset RAM.

  • Identifiser mulige minnelekkasjer der objekter ikke lenger trengs, men fortsatt holdes i minnet.
  • Analyser heap-øyeblikksbildet for å se hvilke objekter som bruker mest minne.
  • Følg endringer i minne over tid for å oppdage trender.

Diagnostisere UI-hakking med bildediagrammet

UI-hakking viser til merkbare pauser eller rykk i animasjoner eller rulling i appen. Frame Chart i Performance-fanen er avgjørende for å diagnostisere dette.

Hver stolpe representerer ett bilde. Hvis en stolpe er høyere enn 16 ms (for 60 fps), betyr det at bildet tok for lang tid å gjengi, noe som fører til synlig hakking. Diagrammet deler opp tiden som brukes av UI- og GPU-trådene, slik at De kan forstå årsaken til forsinkelsen.

Vanlige ytelsesflaskehalser

Under profilering kan De støte på disse vanlige årsakene:

  • Krevende beregninger på UI-tråden.
  • Overdreven gjenoppbygging av widgeter på grunn av feil håndtering av tilstand.
  • Ueffektiv bruk av store lister (for eksempel at ListView.builder ikke brukes).
  • Lasting av uoptimaliserte bilder eller for mange bilder samtidig.
  • Komplekse layouter som fører til dype widgettrær.

Anbefalt praksis for ytelse

Her er noen tips for å skrive effektiv Flutter-kode:

  • Bruk const-widgeter når det er mulig, for å hindre unødvendig gjenoppbygging.
  • Begrens omfanget av kall til setState slik at bare nødvendige deler bygges opp på nytt.
  • Bruk ListView.builder for lange lister, slik at elementene gjengis effektivt.
  • Bufre bilder og andre ressurser.
  • Flytt krevende beregninger til isolates eller bakgrunnstråder.

Kunnskapssjekk i profilering

DevTools tilbyr kraftige funksjoner som kan bidra til å optimalisere Flutter-appen. Hvilke av de følgende problemene kan Flutter DevTools hjelpe Dem med å identifisere og diagnostisere?

Oppsummering: Mestre ytelse

Godt jobbet! De har lært det grunnleggende om ytelsesprofilering i Flutter.

  • Flutter DevTools er det viktigste verktøyet for ytelsesanalyse.
  • Bruk Performance-fanen til å oppdage UI-hakking og tapte bilder.
  • CPU Profiler hjelper Dem med å finne treg kode.
  • Identifiser minneproblemer med Memory-fanen.
  • Ta i bruk anbefalt praksis, som å bruke const-widgeter og effektiv gjengivelse av lister, for å bygge apper som kjører jevnt.

Fortsett å øve med DevTools for å bygge svært optimaliserte Flutter-applikasjoner!

Gratis å komme i gang

Lær deg Dart med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
22
Leksjoner
88

Ofte stilte spørsmål

Er leksjonen «Ytelsesprofilering» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Mobilutvikling med Flutter, inkludert «Ytelsesprofilering», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Mobilutvikling med Flutter inneholder totalt 4 leksjoner.

Hva lærer jeg i «Ytelsesprofilering»?

Bruk Flutter-verktøyene for profilering til å identifisere og løse ytelsesflaskehalser, slik at brukeropplevelsen blir jevn og responsiv. Du øver på Mobilutvikling med Flutter med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Mobilutvikling med Flutter?

Ingen tidligere erfaring er nødvendig. Mobilutvikling med Flutter på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Ytelsesprofilering»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Mobilutvikling med Flutter-leksjonen?

Ja. Alle Mobilutvikling med Flutter-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. App Store og Play Store
  2. Ytelsesprofilering
  3. CI/CD for Flutter
  4. Optimalisering av appstørrelse og bygging
← Tilbake til Mobilutvikling med Flutter