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.

instagram viewer

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.