Parandage oma Go programmide jõudlust profiilide koostamise tehnika abil.

Profileerimine on tarkvara arendustsüklis tavaliselt kasutatav tehnika a toimivuse analüüsimiseks programm, tavaliselt programmide võrdlemiseks või kitsaskohtade ja parendusvaldkondade tuvastamiseks a programm. Profileerimine hõlmab erinevate mõõdikute, nagu mälukasutus, protsessori kasutus, täitmisaeg ja muu süsteemitaseme statistika, mõõtmist ja analüüsimist.

Profileerimise eesmärk on tuvastada programmi osad, mis tarbivad kõige rohkem ressursse, et seda saaks optimeerida parema jõudluse saavutamiseks. Profileerimine võib aidata ka silumisel, mäluhalduse optimeerimisel ja samaaegsuse häälestamisel.

Profileerimine Go's

Go-s on profiilide koostamiseks palju tööriistu. Mõned populaarsed tööriistad hõlmavad Go sisseehitatud pprof-profiilitööriista ja populaarseid kolmanda osapoole pakette, nagu Go Tool Trace ja Go-Torch paketid.

The pprof pakett on osa käitusaeg pakett. The pprof pakett pakub funktsioone käitusaja profileerimise andmete kirjutamiseks vormingutes, mis pprof visualiseerimistööriist suudab tõlgendada.

instagram viewer

Siit saate teada, kuidas saate importida pprof pakett oma Go programmidesse:

importida"pprof"

Go pakub mitmeid käske ja lippe lähtekoodiga töötamiseks. Käivitage järgmine tööriist käsk, et pääseda juurde erinevates vormingutes profileerimise tulemustele.

mine tööriist pprof

Käsk väljastab rakenduse üksikasjad pprof käsk.

Protsessori profileerimine Go-s

Protsessori profileerimine mõõdab aega, mille programm kulutab funktsioonide täitmisele. Protsessori profileerimine on kasulik koodiosade tuvastamiseks, mis kulutavad kõige rohkem protsessori aega.

The pprof pakett pakub funktsioone CPU profiilide kogumiseks, protsessori profiilide koostamise alustamiseks ja peatamiseks ning profiiliandmete failidesse kirjutamise funktsiooni.

CPU profiili käivitamiseks ja peatamiseks ning andmete profiilifaili kirjutamiseks tehke järgmist.

importida (
"os"
"käitusaeg/pprof"
)

funcpeamine() {
f, err := os. Loo("cpu_profile.prof")
kui eks!= null {
paanika(viga)
}
edasi lükata f. Sulge()

err = pprof. StartCPUProfile (f)
kui eks!= null {
paanika(viga)
}
edasi lükata pprof. StopCPUProfile()

// profileeritav kood
}

The peamine funktsioon loob faili ja sulgeb failivoo nupuga a edasi lükata avaldus ja Sulge failieksemplari funktsioon. The Käivitage CPUProfile funktsioon käivitab CPU profiili ja kirjutab andmed faili ning StopCPUProfile sulgeb profiilivoo a-ga edasi lükata avaldus. Pärast protsessoriprofiili käivitamist ja peatamist saate jätkata analüüsitava koodi kirjutamist.

Siin on käivitamise tulemus pprof käsk programmi profiilifailiga:

Jooksevad pprof käsk failiga käivitab interaktiivse kesta, mis võimaldab teil profiiliandmeid uurida. Võite kasutada selliseid käske nagu üleval ja nimekirja funktsioonide vaatamiseks, mille täitmine võtab kõige rohkem aega.

Mälu profileerimine Go-s

Mälu profileerimine on meetod, mida kasutatakse mälulekke ja kalli mälukasutuse tuvastamiseks koodis, mõõtes koodi funktsioonide mälukasutust.

Mäluprofiili saate käivitada nupuga WriteHeapProfile funktsiooni. The WriteHeapProfile funktsioon võtab faili eksemplari ja kirjutab profiiliandmed faili.

importida (
"os"
"käitusaeg/pprof"
)

funcpeamine() {
f, err := os. Loo("mem_profile.prof")
kui eks!= null {
paanika(viga)
}
edasi lükata f. Sulge()

err = pprof. WriteHeapProfile (f)
kui eks!= null {
paanika(viga)
}

// profileeritav kood
}

The peamine funktsioon loob profiilifaili ja WriteHeapProfile Funktsioon võtab faili eksemplari argumendina ja tagastab pärast faili kirjutamist kirjutamisvea tüübi. Edasi saab käsitlege viga vastavalt oma nõudele.

Blokeeri profiilide koostamine rakendusega Go

Plokiprofiili koostamine mõõdab programmi ooteaega sünkroonimisprimitiivide, näiteks mutexide ja kanalite jaoks. Plokiprofiilide koostamine on kasulik koodi osade tuvastamiseks, mis võivad põhjustada blokeerimist.

The Vaata üles funktsioon tagastab profiili määratud stringi nimega ja Kirjuta funktsioon Vaata üles funktsioon kirjutab faili pprof-vormingus hetktõmmise profiilist.

Saate oma Go programmide jaoks plokkide profiilide koostamise rakendada järgmiselt.

importida (
"os"
"käitusaeg/pprof"
)

funcpeamine() {
f, err := os. Loo("ploki_profiil.prof")
kui eks!= null {
paanika(viga)
}
edasi lükata f. Sulge()

err = pprof. Vaata üles("blokk").WriteTo (f, 0)
kui eks!= null {
paanika(viga)
}

// profileeritav kood
}

Programm loob faili plokiprofiili andmete salvestamiseks, otsib plokke Vaata üles funktsiooni ja kirjutab faili plokiprofiili andmed.

Trace Profiling With Go

Jäljeprofiilide koostamine on meetod programmi täitmise mõõtmiseks, sealhulgas gorutiini ajakava ja süsteemikutsed. Jäljeprofiilide koostamine on kasulik jõudluse kitsaskohtade tuvastamiseks ja erinevate programmiosade vastastikuste mõjude mõistmiseks.

The jälg pakett pakub jälgi profiilide koostamise funktsioone. See pakett on samuti osa käitusaeg pakett.

importida (
"os"
"käitusaeg/jälg"
)

funcpeamine() {
f, err := os. Loo("trace.out")
kui eks!= null {
paanika(viga)
}
edasi lükata f. Sulge()

err = jälg. Algus (f)
kui eks!= null {
paanika(viga)
}
edasi lükata jälg. Stopp ()

// profileeritav kood
}

Programm loob jälgimisandmete salvestamiseks jälgimisfaili, käivitab jälgija käsuga Alusta funktsioon, mis võtab sisse faili eksemplari ja tagastab veatüübi ning lükkab jälgija koos edasi Peatus funktsiooni.

Go pakub ka tööriistu lähtekoodi vormindamiseks. Lisaks profileerimistööriistadele saate koodistandardite säilitamiseks kasutada vormindustööriistu. The gofmt tööriist on sisseehitatud vormindamistööriist, mida saate kasutada Go lähtekoodi vormindamiseks vastavalt pakettide jaoks määratud reeglitele.