Zlepšite výkon svojich programov Go pomocou techniky profilovania.

Profilovanie je technika bežne používaná v cykle vývoja softvéru na analýzu výkonnosti a program, zvyčajne na porovnanie medzi programami alebo na identifikáciu úzkych miest a oblastí zlepšenia pre a program. Profilovanie zahŕňa meranie a analýzu rôznych metrík, ako je využitie pamäte, využitie CPU, čas vykonávania a ďalšie štatistiky na úrovni systému.

Profilovanie má za cieľ identifikovať časti programu, ktoré spotrebúvajú najviac zdrojov, aby mohol byť optimalizovaný pre lepší výkon. Profilovanie môže tiež pomôcť pri ladení, optimalizácii správy pamäte a ladení súbežnosti.

Profilovanie v Go

V Go je veľa nástrojov na profilovanie. Medzi obľúbené nástroje patrí vstavaný profilovací nástroj pprof Go a obľúbené balíky tretích strán, ako sú balíky Go Tool Trace a Go-Torch.

The pprof balenie je súčasťou beh programu balík. The pprof balík poskytuje funkcionalitu na zapisovanie údajov profilovania za behu vo formátoch, ktoré pprof vizualizačný nástroj dokáže interpretovať.

instagram viewer

Tu je návod, ako môžete importovať pprof balík do programov Go:

importovať"pprof"

Go poskytuje niekoľko príkazov a príznakov pracovať so zdrojovým kódom. Spustite nasledujúce nástroj na prístup k výsledkom profilovania v rôznych formátoch.

ísť nástroj pprof

Príkaz vypíše podrobnosti o použití pprof príkaz.

Profilovanie CPU v Go

Profilovanie CPU meria čas, ktorý program strávi vykonávaním funkcií. Profilovanie CPU je užitočné na identifikáciu častí kódu, ktoré spotrebúvajú najviac času CPU.

The pprof balík poskytuje funkcie na zhromažďovanie profilov CPU, spustenie a zastavenie profilovania CPU a funkciu na zapisovanie údajov profilu do súborov.

Tu je návod, ako spustiť a zastaviť profil CPU a zapísať údaje do profilovacieho súboru:

importovať (
"os"
"runtime/pprof"
)

funcHlavná() {
f, chyba := os. Vytvoriť("cpu_profile.prof")
ak chyba!= nula {
panika(chyba)
}
odložiť f. Zavrieť()

chybovať = pprof. StartCPUProfile (f)
ak chyba!= nula {
panika(chyba)
}
odložiť pprof. StopCPUProfile()

// kód, ktorý sa má profilovať
}

The Hlavná funkcia vytvorí súbor a zatvorí prúd súborov s a odložiť vyhlásenie a Zavrieť funkcia inštancie súboru. The StartCPUProfile funkcia spustí profil CPU a zapíše údaje do súboru a StopCPUProfile zatvorí prúd profilu pomocou a odložiť vyhlásenie. Po spustení a zastavení profilu CPU môžete pokračovať v písaní kódu, ktorý chcete analyzovať.

Tu je výsledok spustenia pprof príkaz s profilovým súborom z programu:

Spustenie pprof príkaz so súborom spustí interaktívny shell, ktorý vám umožní preskúmať profilovacie údaje. Môžete použiť príkazy ako top a zoznam na zobrazenie funkcií, ktorých vykonanie trvá najviac času.

Profilovanie pamäte v Go

Profilovanie pamäte je technika používaná na identifikáciu únikov pamäte a drahého využitia pamäte v kóde meraním využitia pamäte funkciami v kóde.

Pamäťový profil môžete spustiť pomocou WriteHeapProfile funkciu. The WriteHeapProfile funkcia prevezme inštanciu súboru a zapíše údaje profilu do súboru.

importovať (
"os"
"runtime/pprof"
)

funcHlavná() {
f, chyba := os. Vytvoriť("mem_profile.prof")
ak chyba!= nula {
panika(chyba)
}
odložiť f. Zavrieť()

chybovať = pprof. WriteHeapProfile (f)
ak chyba!= nula {
panika(chyba)
}

// kód, ktorý sa má profilovať
}

The Hlavná vytvorí profilovací súbor a WriteHeapProfile funkcia vezme inštanciu súboru ako argument a po zápise do súboru vráti typ chyby zápisu. Môžete ďalej riešiť chybu podľa vašich požiadaviek.

Blokovať profilovanie pomocou Go

Profilovanie blokov meria čakaciu dobu programu na synchronizačné primitívy, ako sú mutexy a kanály. Profilovanie blokov je užitočné na identifikáciu častí kódu, ktoré môžu spôsobiť blokovanie.

The Vyhľadať funkcia vráti profil s názvom zadaného reťazca a Písať funkciu Vyhľadať funkcia zapíše do súboru snímku profilu vo formáte pprof.

Tu je návod, ako môžete implementovať profilovanie blokov pre svoje programy Go:

importovať (
"os"
"runtime/pprof"
)

funcHlavná() {
f, chyba := os. Vytvoriť("profil_bloku.prof")
ak chyba!= nula {
panika(chyba)
}
odložiť f. Zavrieť()

chybovať = pprof. Vyhľadať("blok").WriteTo (f, 0)
ak chyba!= nula {
panika(chyba)
}

// kód, ktorý sa má profilovať
}

Program vytvorí súbor na ukladanie údajov profilu bloku, hľadá bloky s Vyhľadať a zapíše údaje profilu bloku do súboru.

Sledovanie profilovania s Go

Profilovanie sledovania je technika na meranie vykonávania programu vrátane rutinného plánovania a systémových volaní. Profilovanie sledovania je užitočné na identifikáciu úzkych miest výkonu a pochopenie interakcií medzi rôznymi časťami programu.

The stopa balík poskytuje funkcie na profilovanie sledovania. Tento balík je tiež súčasťou beh programu balík.

importovať (
"os"
"runtime/trace"
)

funcHlavná() {
f, chyba := os. Vytvoriť("trace.out")
ak chyba!= nula {
panika(chyba)
}
odložiť f. Zavrieť()

chyba = stopa. Štart (f)
ak chyba!= nula {
panika(chyba)
}
odložiť stopa. Stop()

// kód, ktorý sa má profilovať
}

Program vytvorí sledovací súbor na uloženie údajov sledovania, spustí sledovač s Štart funkcia, ktorá prevezme inštanciu súboru a vráti typ chyby a odloží sledovač s Stop funkciu.

Go tiež poskytuje nástroje na formátovanie zdrojového kódu. Okrem nástrojov na profilovanie môžete na udržiavanie štandardov kódu použiť aj nástroje na formátovanie. The gofmt tool je vstavaný formátovací nástroj, ktorý môžete použiť na formátovanie zdrojového kódu Go na základe špecifikovaných pravidiel pre vaše balíčky.