Javítsa Go programjai teljesítményét a profilalkotási technika használatával.
A profilalkotás a szoftverfejlesztési ciklusban általánosan használt technika a teljesítményének elemzésére program, általában a programok összehasonlításához vagy a szűk keresztmetszetek és fejlesztési területek azonosításához a program. A profilalkotás különféle mérőszámok mérését és elemzését foglalja magában, mint például a memóriahasználat, a CPU kihasználtság, a végrehajtási idő és egyéb rendszerszintű statisztikák.
A profilalkotás célja, hogy azonosítsa a program azon részeit, amelyek a legtöbb erőforrást fogyasztják, így a jobb teljesítmény érdekében optimalizálható. A profilozás segíthet a hibakeresésben, a memóriakezelés optimalizálásában és a párhuzamosság hangolásában is.
Profilozás a Go-ban
A Go-ban számos eszköz létezik a profilalkotáshoz. Néhány népszerű eszköz közé tartozik a Go beépített pprof profilozó eszköze és olyan népszerű harmadik féltől származó csomagok, mint a Go Tool Trace és a Go-Torch csomagok.
A pprof csomag része a futásidő csomag. A pprof csomag funkciót biztosít a futásidejű profilozási adatok írására olyan formátumokban, amelyek a pprof a vizualizációs eszköz értelmezni tudja.
Így importálhatja a pprof csomagot a Go programjaiba:
import"pprof"
A Go számos parancsot és zászlót biztosít hogy dolgozzon a forráskóddal. Futtassa a következőt eszköz parancsot a profilalkotási eredmények eléréséhez különböző formátumokban.
megy szerszám pprof
A parancs a használati részleteket adja ki a pprof parancs.
CPU-profilozás a Go-ban
A CPU-profilozás azt az időt méri, amelyet a program a funkciók végrehajtásával tölt. A CPU-profilozás hasznos a legtöbb CPU-időt fogyasztó kódrészek azonosításához.
A pprof A csomag funkciókat biztosít a CPU-profilok gyűjtéséhez, a CPU-profilkészítés elindításához és leállításához, valamint a profiladatok fájlba írásához.
A következőképpen indíthat el és állíthat le egy CPU-profilt, és írja be az adatokat egy profilozó fájlba:
import (
"os"
"futásidejű/pprof"
)funcfő-() {
f, err := os. Teremt("cpu_profil.prof")
ha hiba! = nulla {
pánik(téved)
}
elhalasztja f. Bezárás()err = pprof. StartCPUProfile (f)
ha hiba! = nulla {
pánik(téved)
}
elhalasztja pprof. StopCPUProfile()
// profilozandó kód
}
A fő- függvény létrehoz egy fájlt, és bezárja a fájlfolyamot a elhalasztja nyilatkozat és a Bezárás a fájlpéldány funkciója. A StartCPUProfile függvény elindít egy CPU-profilt és beírja az adatokat a fájlba, majd a StopCPUProfile lezárja a profilfolyamot a elhalasztja nyilatkozat. A CPU-profil elindítása és leállítása után folytathatja az elemezni kívánt kód megírását.
Íme a futtatás eredménye pprof parancs a program profilfájljával:
Futás a pprof parancs egy fájllal interaktív parancsértelmezőt indít el, amely lehetővé teszi a profilozási adatok felfedezését. Használhat olyan parancsokat, mint pl tetejére és lista hogy megtekinthesse azokat a funkciókat, amelyek végrehajtása a legtöbb időt vesz igénybe.
Memóriaprofilozás a Go-ban
A memóriaprofilozás a memóriaszivárgások és a költséges memóriahasználat azonosítására szolgáló technika a kódban lévő funkciók memóriahasználatának mérésével.
A memóriaprofilt a WriteHeapProfile funkció. A WriteHeapProfile függvény fájlpéldányt vesz, és a profiladatokat a fájlba írja.
import (
"os"
"futásidejű/pprof"
)funcfő-() {
f, err := os. Teremt("mem_profile.prof")
ha hiba! = nulla {
pánik(téved)
}
elhalasztja f. Bezárás()err = pprof. WriteHeapProfile (f)
ha hiba! = nulla {
pánik(téved)
}
// profilozandó kód
}
A fő- függvény létrehoz egy profilozó fájlt, és a WriteHeapProfile függvény argumentumként veszi a fájlpéldányt, és a fájlba írás után írási hibatípust ad vissza. Továbbra is lehet kezelje a hibát az Ön igényei szerint.
Profilozás blokkolása a Go segítségével
A blokkprofilozás a program várakozási idejét méri a szinkronizálási primitívekre, például mutexekre és csatornákra. A blokkprofilozás hasznos a kód azon részeinek azonosítására, amelyek blokkolást okozhatnak.
A Nézz fel függvény visszaadja a profilt egy megadott karakterlánc nevével, és a Írj neki funkciója Nézz fel függvény pprof formátumú pillanatképet ír a profilról a fájlba.
A következőképpen hajthatja végre a blokkprofilozást Go programjaihoz:
import (
"os"
"futásidejű/pprof"
)funcfő-() {
f, err := os. Teremt("blokk_profil.prof")
ha hiba! = nulla {
pánik(téved)
}
elhalasztja f. Bezárás()err = pprof. Nézz fel("Blokk").WriteTo (f, 0)
ha hiba! = nulla {
pánik(téved)
}
// profilozandó kód
}
A program létrehoz egy fájlt a blokkprofil adatok tárolására, blokkokat keres a Nézz fel függvényt, és beírja a blokkprofil adatait a fájlba.
Trace Profiling With Go
A nyomkövetési profilalkotás a program végrehajtásának mérésére szolgáló technika, beleértve a gorutin ütemezést és a rendszerhívásokat. A nyomkövetési profilalkotás hasznos a teljesítmény szűk keresztmetszetek azonosításához és a különböző programrészek közötti kölcsönhatások megértéséhez.
A nyom csomag nyomkövetési profilalkotási funkciókat biztosít. Ez a csomag is része a futásidő csomag.
import (
"os"
"futásidő/nyomkövetés"
)funcfő-() {
f, err := os. Teremt("trace.out")
ha hiba! = nulla {
pánik(téved)
}
elhalasztja f. Bezárás()err = nyom. Kezdés (f)
ha hiba! = nulla {
pánik(téved)
}
elhalasztja nyom. Állj meg()
// profilozandó kód
}
A program létrehoz egy nyomkövetési fájlt a nyomkövetési adatok tárolására, elindítja a nyomkövetőt a Rajt függvény, amely beveszi a fájlpéldányt és hibatípust ad vissza, és elhalasztja a nyomkövetőt a Állj meg funkció.
A Go eszközöket is biztosít a forráskód formázásához. A profilalkotási eszközök mellett a formázási eszközöket is használhatja a kódszabványok fenntartásához. A gofmt eszköz egy beépített formázási eszköz, amellyel a csomagjaira meghatározott szabályok alapján formázhatja Go forráskódját.