Poboljšajte performanse svojih Go programa pomoću tehnike profiliranja.

Profiliranje je tehnika koja se obično koristi u ciklusu razvoja softvera za analizu izvedbe a programa, obično za usporedbu između programa ili za prepoznavanje uskih grla i područja poboljšanja za a program. Profiliranje uključuje mjerenje i analizu različitih metrika kao što su korištenje memorije, korištenje CPU-a, vrijeme izvršenja i druge statistike na razini sustava.

Cilj profiliranja je identificirati dijelove programa koji troše najviše resursa kako bi se mogao optimizirati za bolje performanse. Profiliranje također može pomoći kod otklanjanja pogrešaka, optimiziranja upravljanja memorijom i podešavanja paralelnosti.

Profiliranje u Go

Postoji mnogo alata za profiliranje u Gou. Neki popularni alati uključuju Goov ugrađeni pprof alat za profiliranje i popularne pakete trećih strana poput paketa Go Tool Trace i Go-Torch.

The pprof paket je dio vrijeme izvođenja paket. The pprof paket pruža funkcionalnost za pisanje podataka za profiliranje vremena izvođenja u formatima koji

instagram viewer
pprof alat za vizualizaciju može interpretirati.

Evo kako možete uvesti pprof pakirajte u svoje Go programe:

uvoz"pprof"

Go nudi nekoliko naredbi i oznaka za rad s izvornim kodom. Pokrenite sljedeće alat naredba za pristup rezultatima profiliranja u različitim formatima.

ići alat pprof

Naredba ispisuje pojedinosti upotrebe o pprof naredba.

CPU profiliranje u Go

CPU profiliranje mjeri vrijeme koje program provede tijekom izvršavanja funkcija. CPU profiliranje je korisno za identificiranje dijelova koda koji troše najviše CPU vremena.

The pprof paket pruža funkcije za prikupljanje CPU profila, pokretanje i zaustavljanje CPU profiliranja i funkciju za pisanje podataka profila u datoteke.

Evo kako pokrenuti i zaustaviti CPU profil i zapisati podatke u profilnu datoteku:

uvoz (
"os"
"vrijeme izvođenja/pprof"
)

funkglavni() {
f, pogriješiti := os. Stvoriti("cpu_profile.prof")
ako pogriješiti != nula {
panika(greška)
}
odgoditi f. Zatvoriti()

pogreška = pprof. StartCPUProfile (f)
ako pogriješiti != nula {
panika(greška)
}
odgoditi pprof. ZaustaviCPUProfil()

// kod za profiliranje
}

The glavni stvara datoteku i zatvara tok datoteke pomoću a odgoditi izjava i Zatvoriti funkcija instance datoteke. The Pokreni CPUProfil pokreće CPU profil i zapisuje podatke u datoteku, a Zaustavi CPUProfil zatvara tok profila s a odgoditi izjava. Nakon pokretanja i zaustavljanja CPU profila, možete nastaviti s pisanjem koda koji želite analizirati.

Ovo je rezultat pokretanja pprof naredba s datotekom profila iz programa:

Pokretanje pprof naredba s datotekom pokreće interaktivnu ljusku koja vam omogućuje istraživanje podataka profiliranja. Možete koristiti naredbe poput vrh i popis za pregled funkcija za čije je izvršenje potrebno najviše vremena.

Profiliranje memorije u Go

Profiliranje memorije je tehnika koja se koristi za prepoznavanje curenja memorije i skupe upotrebe memorije u kodu mjerenjem upotrebe memorije funkcija u kodu.

Možete pokrenuti memorijski profil pomoću WriteHeapProfile funkcija. The WriteHeapProfile funkcija preuzima instancu datoteke i zapisuje podatke profila u datoteku.

uvoz (
"os"
"vrijeme izvođenja/pprof"
)

funkglavni() {
f, pogriješiti := os. Stvoriti("mem_profile.prof")
ako pogriješiti != nula {
panika(greška)
}
odgoditi f. Zatvoriti()

pogreška = pprof. WriteHeapProfile (f)
ako pogriješiti != nula {
panika(greška)
}

// kod za profiliranje
}

The glavni stvara profilnu datoteku, a WriteHeapProfile funkcija uzima instancu datoteke kao argument i vraća vrstu pogreške pisanja nakon pisanja u datoteku. Možete dalje riješite pogrešku prema vašim zahtjevima.

Blokiraj profiliranje uz Go

Profiliranje blokova mjeri vrijeme čekanja programa za primitive sinkronizacije, kao što su muteksi i kanali. Profiliranje blokova je korisno za prepoznavanje dijelova koda koji mogu uzrokovati blokiranje.

The Pogledaj funkcija vraća profil s imenom navedenog niza i WriteTo funkcija Pogledaj funkcija piše pprof-formatiranu snimku profila u datoteku.

Evo kako možete implementirati profiliranje blokova za svoje Go programe:

uvoz (
"os"
"vrijeme izvođenja/pprof"
)

funkglavni() {
f, pogriješiti := os. Stvoriti("block_profile.prof")
ako pogriješiti != nula {
panika(greška)
}
odgoditi f. Zatvoriti()

pogreška = pprof. Pogledaj("blok").WriteTo (f, 0)
ako pogriješiti != nula {
panika(greška)
}

// kod za profiliranje
}

Program stvara datoteku za pohranu podataka profila blokova, traži blokove s Pogledaj funkciju i zapisuje podatke profila bloka u datoteku.

Trace Profiling uz Go

Profiliranje praćenja je tehnika za mjerenje izvršenja programa, uključujući gorutinsko raspoređivanje i sistemske pozive. Profiliranje praćenja korisno je za prepoznavanje uskih grla u izvedbi i razumijevanje interakcija između različitih dijelova programa.

The trag paket pruža funkcije za profiliranje tragova. Ovaj paket je također dio vrijeme izvođenja paket.

uvoz (
"os"
"vrijeme izvođenja/praćenje"
)

funkglavni() {
f, pogriješiti := os. Stvoriti("trag.out")
ako pogriješiti != nula {
panika(greška)
}
odgoditi f. Zatvoriti()

pogriješiti = trag. Početak (f)
ako pogriješiti != nula {
panika(greška)
}
odgoditi trag. Stop()

// kod za profiliranje
}

Program stvara datoteku praćenja za pohranjivanje podataka praćenja, pokreće praćenje s Početak funkcija koja preuzima instancu datoteke i vraća vrstu pogreške te odgađa praćenje s Stop funkcija.

Go također nudi alate za formatiranje izvornog koda. Uz alate za profiliranje, možete koristiti alate za oblikovanje za održavanje standarda koda. The gofmt alat je ugrađeni alat za oblikovanje koji možete koristiti za formatiranje vašeg Go izvornog koda na temelju navedenih pravila za vaše pakete.