Migliora le prestazioni dei tuoi programmi Go utilizzando la tecnica del profiling.

La profilazione è una tecnica comunemente utilizzata nel ciclo di sviluppo del software per analizzare le prestazioni di un programma, di solito per un confronto tra programmi o per identificare i colli di bottiglia e le aree di miglioramento per a programma. La profilazione comporta la misurazione e l'analisi di vari parametri come l'utilizzo della memoria, l'utilizzo della CPU, il tempo di esecuzione e altre statistiche a livello di sistema.

La profilazione mira a identificare le parti di un programma che consumano la maggior parte delle risorse in modo che possa essere ottimizzato per prestazioni migliori. La profilazione può anche aiutare con il debug, l'ottimizzazione della gestione della memoria e l'ottimizzazione della concorrenza.

Profilazione in Go

Ci sono molti strumenti per la profilazione in Go. Alcuni strumenti popolari includono lo strumento di profilazione pprof integrato di Go e popolari pacchetti di terze parti come i pacchetti Go Tool Trace e Go-Torch.

instagram viewer

IL pprof pacchetto fa parte del tempo di esecuzione pacchetto. IL pprof Il pacchetto fornisce funzionalità per la scrittura di dati di profilatura di runtime in formati che il pprof lo strumento di visualizzazione può interpretare.

Ecco come puoi importare il file pprof pacchetto nei tuoi programmi Go:

importare"prof"

Go fornisce diversi comandi e flag per lavorare con il codice sorgente. Eseguire quanto segue attrezzo comando per accedere ai risultati di profilazione in vari formati.

andare strumento pprof

Il comando restituisce i dettagli sull'utilizzo del file pprof comando.

Profilazione della CPU in Go

La profilazione della CPU misura il tempo impiegato da un programma durante l'esecuzione delle funzioni. La profilatura della CPU è utile per identificare le parti di codice che consumano la maggior parte del tempo della CPU.

IL pprof Il pacchetto fornisce funzioni per la raccolta dei profili della CPU, l'avvio e l'arresto della profilazione della CPU e una funzione per la scrittura dei dati del profilo nei file.

Ecco come avviare e arrestare un profilo CPU e scrivere i dati in un file di profilatura:

importare (
"os"
"tempo di esecuzione/prof"
)

funzprincipale() {
f, err := os. Creare("profilo_cpu.prof")
Se errare!= zero {
panico(errare)
}
differire F. Vicino()

err = pprof. AvviaProfiloCPU (f)
Se errare!= zero {
panico(errare)
}
differire pprof. StopCPUProfile()

// codice da profilare
}

IL principale La funzione crea un file e chiude il flusso di file con a differire dichiarazione e il Vicino funzione dell'istanza del file. IL AvviaProfiloCPU la funzione avvia un profilo della CPU e scrive i dati nel file, e il file StopCPUProfile chiude il flusso del profilo con a differire dichiarazione. Dopo aver avviato e arrestato il profilo della CPU, puoi procedere alla scrittura del codice che desideri analizzare.

Ecco il risultato dell'esecuzione del file pprof comando con il file del profilo dal programma:

Esecuzione del pprof comando con un file avvia una shell interattiva che consente di esplorare i dati di profilazione. Puoi usare comandi come superiore E elenco per visualizzare le funzioni che richiedono più tempo per essere eseguite.

Profilazione della memoria in Go

La profilatura della memoria è una tecnica usata per identificare le perdite di memoria e l'utilizzo costoso della memoria nel codice misurando l'utilizzo della memoria delle funzioni nel codice.

È possibile avviare un profilo di memoria con il file WriteHeapProfile funzione. IL WriteHeapProfile la funzione accetta l'istanza del file e scrive i dati del profilo nel file.

importare (
"os"
"tempo di esecuzione/prof"
)

funzprincipale() {
f, err := os. Creare("mem_profile.prof")
Se errare!= zero {
panico(errare)
}
differire F. Vicino()

err = pprof. WriteHeapProfile (f)
Se errare!= zero {
panico(errare)
}

// codice da profilare
}

IL principale la funzione crea un file di profilazione e il file WriteHeapProfile La funzione accetta l'istanza del file come argomento e restituisce un tipo di errore di scrittura dopo aver scritto nel file. Puoi ulteriormente gestire l'errore in base alle proprie esigenze.

Blocca la profilazione con Go

Il block profiling misura il tempo di attesa di un programma per le primitive di sincronizzazione, come mutex e canali. La profilazione dei blocchi è utile per identificare parti del codice che potrebbero causare il blocco.

IL Cercare La funzione restituisce il profilo con il nome di una stringa specificata e il Scrivere a funzione del Cercare La funzione scrive uno snapshot del profilo in formato pprof nel file.

Ecco come puoi implementare la profilazione dei blocchi per i tuoi programmi Go:

importare (
"os"
"tempo di esecuzione/prof"
)

funzprincipale() {
f, err := os. Creare("blocco_profilo.prof")
Se errare!= zero {
panico(errare)
}
differire F. Vicino()

err = pprof. Cercare("bloccare").WriteTo (f, 0)
Se errare!= zero {
panico(errare)
}

// codice da profilare
}

Il programma crea un file per memorizzare i dati del profilo del blocco, cerca i blocchi con estensione Cercare funzione e scrive i dati del profilo del blocco nel file.

Traccia la profilazione con Go

Il trace profiling è una tecnica per misurare l'esecuzione di un programma, inclusa la pianificazione delle goroutine e le chiamate di sistema. La profilatura della traccia è utile per identificare i colli di bottiglia delle prestazioni e comprendere le interazioni tra le diverse parti del programma.

IL traccia Il pacchetto fornisce funzioni per la profilazione della traccia. Anche questo pacchetto fa parte del tempo di esecuzione pacchetto.

importare (
"os"
"runtime/traccia"
)

funzprincipale() {
f, err := os. Creare("tracciare")
Se errare!= zero {
panico(errare)
}
differire F. Vicino()

err = traccia. Inizio (f)
Se errare!= zero {
panico(errare)
}
differire traccia. Fermare()

// codice da profilare
}

Il programma crea un file di traccia per memorizzare i dati di traccia, avvia il tracciante con l'estensione Inizio funzione che accetta l'istanza del file e restituisce un tipo di errore e rinvia il tracciante con il Fermare funzione.

Go fornisce anche strumenti per la formattazione del codice sorgente. Oltre agli strumenti di profilazione, puoi utilizzare gli strumenti di formattazione per mantenere gli standard del codice. IL buongiorno tool è uno strumento di formattazione integrato che puoi utilizzare per formattare il codice sorgente di Go in base a regole specificate per i tuoi pacchetti.