Ytelsesprofilering
Bruk innebygde verktøy og eksterne hjelpemidler til å profilere ytelsen til Electron-appen Deres og finne flaskehalser og forbedringsområder.
Ytelsesprofilering er en gratis leksjon i Utvikling av Electron-skrivebordsapper på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Utvikling av Electron-skrivebordsapper, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Utvikling av Electron-skrivebordsapper inneholder totalt 4 leksjoner.
Hva er ytelsesprofilering?
Ytelsesprofilering er som å gi Electron-appen en helsesjekk! Det er prosessen med å analysere appens ressursbruk (CPU, minne og nettverk) for å finne ut hvor den blir treg.
For skrivebordsapper er en jevn og responsiv brukeropplevelse avgjørende. Profilering hjelper oss med å finne flaskehalser og få appene til å føles raske.
Finn vanlige flaskehalser
Electron-apper kombinerer webteknologi med Node.js, så treghet kan oppstå mange steder:
- Gjengivelse av brukergrensesnittet: Komplekse animasjoner eller omfattende DOM-manipulering.
- Tung JavaScript: Langvarige skript som blokkerer brukergrensesnittet.
- IPC-overhead: For mye kommunikasjon mellom hovedprosessen og renderer-prosessene.
- Minnelekkasjer: Objekter som ikke frigjøres, bruker stadig mer RAM.
- Disk-I/O: Treg lesing og skriving av filer i hovedprosessen.
DevTools for renderer-prosessen
Ettersom renderer-prosessen i Electron i praksis er en Chromium-nettside, kan du bruke de kjente utviklerverktøyene i Chromium! De er viktige for feilsøking og profilering av brukergrensesnittet.
For å åpne DevTools for et vindu bruker du myWindow.webContents.openDevTools(); i hovedprosessen.
Profiler CPU-bruk i renderer-prosessen
Åpne DevTools (Ctrl+Shift+I eller Cmd+Option+I) og gå til fanen Performance. Klikk på opptaksknappen, samhandle med brukergrensesnittet og stopp deretter opptaket.
Se etter flammegrafer og identifiser lange oppgaver som blokkerer hovedtråden. Her er et eksempel på et CPU-intensivt renderer-skript:
/*
This code runs in the renderer process (e.g., in index.html).
It's a snippet, not a full standalone program.
*/
function performHeavyTask() {
console.log('Starting heavy renderer task...');
let sum = 0;
for (let i = 0; i < 50000000; i++) { // 50 million iterations
sum += Math.sqrt(i);
}
console.log('Heavy renderer task finished:', sum);
return sum;
}
// Example usage: call this function on a button click
// document.getElementById('myButton').addEventListener('click', performHeavyTask);Profilering av minnet i renderer-prosessen
Fanen Memory i DevTools er avgjørende for å finne minnelekkasjer. Du kan ta heap snapshots for å se objekter som for øyeblikket ligger i minnet, eller ta opp en allocation timeline for å følge minnebruken over tid.
En vanlig lekkasje oppstår når referanser til frakoblede DOM-elementer beholdes. Her er et enkelt eksempel som allokerer minne:
/*
This code runs in the renderer process (e.g., in index.html).
It's a snippet, not a full standalone program.
*/
let memoryHog = [];
function allocateMoreMemory() {
console.log('Allocating more memory...');
for (let i = 0; i < 10000; i++) {
memoryHog.push({
id: i,
data: new Array(1000).fill('some long string to consume memory')
});
}
console.log('Current memoryHog size:', memoryHog.length);
}
// Example usage: call this function repeatedly
// document.getElementById('allocateBtn').addEventListener('click', allocateMoreMemory);Node.js Inspector for hovedprosessen
Hovedprosessen er et Node.js-miljø. For å profilere den bruker vi Node.js Inspector, som er kompatibel med Chrome DevTools!
Du starter Electron-appen med flagget --inspect og kobler deretter DevTools til den oppgitte URL-en (vanligvis chrome-devtools://...) via chrome://inspect i Chrome-nettleseren.
Profilering av CPU og minne i hovedprosessen
Når du har koblet DevTools til hovedprosessen, ser du en DevTools-instans som er spesifikt for Node.js. Bruk fanen Profiler for CPU-flammegrafer og fanen Memory for heap snapshots, på samme måte som for renderer-prosessen.
Kjør dette eksempelet som et Node.js-skript, og prøv å koble DevTools til det for å profilere CPU-bruken:
// main_process_profiling_example.js
// To run: node --inspect main_process_profiling_example.js
// Then open chrome://inspect in Chrome and click "Open dedicated DevTools for Node"
function calculateHeavySum() {
console.log('Starting heavy main process task...');
let sum = 0;
for (let i = 0; i < 200000000; i++) { // 200 million iterations
sum += Math.sin(i) * Math.cos(i);
}
console.log('Heavy main process task finished:', sum);
return sum;
}
console.log("Main process example started.");
// Simulate a recurring task or an event that triggers heavy work
setTimeout(() => {
const result = calculateHeavySum();
console.log("Result of heavy calculation:", result);
}, 1000);
// Keep the process alive for a bit for inspection
setInterval(() => {
// console.log("Main process still running...");
}, 5000);
// This is a standalone Node.js program entry point.Tolke profileringsdata
Når du har en profil, begynner det egentlige arbeidet! Se etter:
- Flame Charts: Visualiserer kallstakker over tid. Bredere søyler betyr at det er brukt mer tid. Se etter «hot paths» (funksjoner som kalles ofte eller bruker lang tid).
- Call Tree/Bottom-Up: Viser funksjoner sortert etter total tid og gjør det enklere å identifisere de mest kostbare operasjonene.
- Memory Snapshots: Viser antall objekter, størrelser og beholdte størrelser, slik at du kan oppdage lekkasjer.
Utover DevTools: eksterne verktøy
For en dypere ytelsesanalyse på systemnivå kan det hende du trenger verktøy utenfor DevTools:
- Linux:
perffor profilering av CPU og kjernenivå. - macOS:
Instrumentsfor omfattende analyse av systemytelse. - Windows:
Windows Performance Recorder (WPR)for detaljert systemaktivitet.
Dette er avanserte verktøy, men det er nyttig å vite at de finnes når du står overfor krevende ytelsesproblemer.
Velge riktig profileringsverktøy
Du mistenker at brukergrensesnittet i Electron-applikasjonen av og til fryser, samtidig som minnebruken sakte øker over tid. Hvilke to verktøy eller metoder vil være mest effektive for å undersøke disse problemene?
Oppsummering: ytelsesprofilering
Godt jobbet! Du har lært hvordan du kan gå frem ved ytelsesprofilering i Electron:
- Bruk Chromium DevTools for både renderer-prosesser (UI/JS) og hovedprosesser (Node.js).
- Fokuser på fanen Performance for CPU-bruk og responsivitet i brukergrensesnittet.
- Bruk fanen Memory for å identifisere minnelekkasjer og overdreven allokering.
- Lær å tolke flammegrafer og minneopptak.
Profilering er avgjørende for å bygge raske og pålitelige Electron-applikasjoner!
Lær deg JavaScript 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
- 12
- Leksjoner
- 47
Ofte stilte spørsmål
Er leksjonen «Ytelsesprofilering» gratis?
Ja – hele teksten i «Ytelsesprofilering» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Utvikling av Electron-skrivebordsapper-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Utvikling av Electron-skrivebordsapper inneholder totalt 4 leksjoner.
Hva lærer jeg i «Ytelsesprofilering»?
Bruk innebygde verktøy og eksterne hjelpemidler til å profilere ytelsen til Electron-appen Deres og finne flaskehalser og forbedringsområder. Du øver på Utvikling av Electron-skrivebordsapper 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 Utvikling av Electron-skrivebordsapper?
Ingen tidligere erfaring er nødvendig. Utvikling av Electron-skrivebordsapper 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 3 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 Utvikling av Electron-skrivebordsapper-leksjonen?
Ja. Alle Utvikling av Electron-skrivebordsapper-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
- Optimalisere oppstartstiden
- Teknikker for minnehåndtering
- Ytelsesprofilering
- Redusere pakke- og diskavtrykket