Izboljšajte delovanje svojih programov Go s tehniko profiliranja.
Profiliranje je tehnika, ki se običajno uporablja v ciklu razvoja programske opreme za analizo uspešnosti a program, običajno za primerjavo med programi ali za identifikacijo ozkih grl in področij izboljšav za a program. Profiliranje vključuje merjenje in analizo različnih meritev, kot so uporaba pomnilnika, izkoriščenost procesorja, čas izvajanja in drugi statistični podatki na ravni sistema.
Namen profiliranja je identificirati dele programa, ki porabijo največ virov, tako da jih je mogoče optimizirati za boljše delovanje. Profiliranje lahko pomaga tudi pri odpravljanju napak, optimiziranju upravljanja pomnilnika in prilagajanju sočasnosti.
Profiliranje v Go
V Go je veliko orodij za profiliranje. Nekatera priljubljena orodja vključujejo Gojevo vgrajeno orodje za profiliranje pprof in priljubljene pakete tretjih oseb, kot sta paketa Go Tool Trace in Go-Torch.
The pprof paket je del čas izvajanja paket. The pprof ponuja funkcionalnost za pisanje podatkov o profiliranju med izvajanjem v formatih, ki jih
pprof orodje za vizualizacijo lahko interpretira.Evo, kako lahko uvozite pprof zapakirajte v svoje programe Go:
uvoz"pprof"
Go ponuja več ukazov in zastavic za delo z izvorno kodo. Zaženite naslednje orodje ukaz za dostop do rezultatov profiliranja v različnih formatih.
pojdi orodje pprof
Ukaz izpiše podrobnosti o uporabi pprof ukaz.
Profiliranje procesorja v Go
Profiliranje procesorja meri čas, ki ga program porabi med izvajanjem funkcij. Profiliranje procesorja je uporabno za prepoznavanje delov kode, ki porabijo največ časa procesorja.
The pprof ponuja funkcije za zbiranje profilov CPE, zagon in zaustavitev profiliranja CPE ter funkcijo za zapisovanje podatkov profila v datoteke.
Tukaj je opisano, kako zagnati in zaustaviti profil CPE ter zapisati podatke v datoteko za profiliranje:
uvoz (
"os"
"runtime/pprof"
)funkglavni() {
f, napaka := os. Ustvari ("cpu_profile.prof")
če napaka!= nič {
panika(napaka)
}
odložiti f. Zapri()napaka = pprof. StartCPUProfile (f)
če napaka!= nič {
panika(napaka)
}
odložiti pprof. StopCPUProfil()
// koda za profiliranje
}
The glavni funkcija ustvari datoteko in zapre tok datoteke z a odložiti izjava in Zapri funkcijo primerka datoteke. The Zaženi CPUProfile funkcija zažene profil CPE in zapiše podatke v datoteko ter StopCPUProfile zapre tok profila z a odložiti izjava. Po zagonu in zaustavitvi profila CPE lahko nadaljujete s pisanjem kode, ki jo želite analizirati.
Tukaj je rezultat izvajanja pprof ukaz s profilno datoteko iz programa:
Vodenje pprof ukaz z datoteko zažene interaktivno lupino, ki vam omogoča raziskovanje podatkov profiliranja. Uporabite lahko ukaze, kot je vrh in seznam da si ogledate funkcije, ki zahtevajo največ časa za izvajanje.
Profiliranje pomnilnika v Go
Profiliranje pomnilnika je tehnika, ki se uporablja za prepoznavanje puščanja pomnilnika in drage porabe pomnilnika v kodi z merjenjem porabe pomnilnika funkcij v kodi.
Profil pomnilnika lahko zaženete z WriteHeapProfile funkcijo. The WriteHeapProfile funkcija sprejme primerek datoteke in zapiše podatke o profilu v datoteko.
uvoz (
"os"
"runtime/pprof"
)funkglavni() {
f, napaka := os. Ustvari ("mem_profile.prof")
če napaka!= nič {
panika(napaka)
}
odložiti f. Zapri()napaka = pprof. WriteHeapProfile (f)
če napaka!= nič {
panika(napaka)
}
// koda za profiliranje
}
The glavni funkcija ustvari profilno datoteko in WriteHeapProfile funkcija vzame primerek datoteke kot argument in po pisanju v datoteko vrne vrsto napake pri pisanju. Lahko še naprej odpravite napako v skladu z vašimi zahtevami.
Blokiraj profiliranje z Go
Profiliranje blokov meri čakalni čas programa za sinhronizacijske primitive, kot so muteksi in kanali. Profiliranje blokov je uporabno za prepoznavanje delov kode, ki lahko povzročijo blokiranje.
The Poglej gor funkcija vrne profil z imenom podanega niza in WriteTo funkcija Poglej gor funkcija zapiše posnetek profila v obliki pprof v datoteko.
Tukaj je opisano, kako lahko implementirate profiliranje blokov za svoje programe Go:
uvoz (
"os"
"runtime/pprof"
)funkglavni() {
f, napaka := os. Ustvari ("block_profile.prof")
če napaka!= nič {
panika(napaka)
}
odložiti f. Zapri()napaka = pprof. Poglej gor("blok").WriteTo (f, 0)
če napaka!= nič {
panika(napaka)
}
// koda za profiliranje
}
Program ustvari datoteko za shranjevanje podatkov profila blokov, poišče bloke z Poglej gor in zapiše podatke o profilu bloka v datoteko.
Profiliranje sledenja z Go
Profiliranje sledenja je tehnika za merjenje izvajanja programa, vključno z rutinskim razporejanjem in sistemskimi klici. Profiliranje sledenja je uporabno za prepoznavanje ozkih grl v delovanju in razumevanje interakcij med različnimi deli programa.
The sled paket ponuja funkcije za profiliranje sledenja. Tudi ta paket je del čas izvajanja paket.
uvoz (
"os"
"runtime/trace"
)funkglavni() {
f, napaka := os. Ustvari ("trace.out")
če napaka!= nič {
panika(napaka)
}
odložiti f. Zapri()napaka = sled. Začetek (f)
če napaka!= nič {
panika(napaka)
}
odložiti sled. Stop()
// koda za profiliranje
}
Program ustvari datoteko sledenja za shranjevanje podatkov sledenja, zažene sledilnik z Začetek funkcija, ki sprejme primerek datoteke in vrne vrsto napake ter odloži sledilnik z Stop funkcijo.
Go nudi tudi orodja za oblikovanje izvorne kode. Poleg orodij za profiliranje lahko uporabite orodja za oblikovanje za vzdrževanje standardov kode. The gofmt je vgrajeno orodje za oblikovanje, ki ga lahko uporabite za oblikovanje izvorne kode Go na podlagi določenih pravil za vaše pakete.