Zlepšete výkon svých programů Go pomocí techniky profilování.

Profilování je technika běžně používaná v cyklu vývoje softwaru k analýze výkonu a program, obvykle pro srovnání mezi programy nebo pro identifikaci úzkých míst a oblastí zlepšení pro a program. Profilování zahrnuje měření a analýzu různých metrik, jako je využití paměti, využití CPU, doba provádění a další statistiky na úrovni systému.

Profilování má za cíl identifikovat části programu spotřebovávající nejvíce zdrojů, aby mohl být optimalizován pro lepší výkon. Profilování může také pomoci s laděním, optimalizací správy paměti a laděním souběžnosti.

Profilování v Go

V Go je mnoho nástrojů pro profilování. Mezi oblíbené nástroje patří vestavěný profilovací nástroj pprof Go a oblíbené balíčky třetích stran, jako jsou balíčky Go Tool Trace a Go-Torch.

The pprof balíček je součástí runtime balík. The pprof balíček poskytuje funkce pro zápis dat profilování za běhu ve formátech, které pprof vizualizační nástroj dokáže interpretovat.

Zde je návod, jak můžete importovat pprof balíček do vašich programů Go:

import"pprof"

Go poskytuje několik příkazů a příznaků pracovat se zdrojovým kódem. Spusťte následující nástroj pro přístup k výsledkům profilování v různých formátech.

jít nástroj pprof

Příkaz vypíše podrobnosti o použití pprof příkaz.

Profilování CPU v Go

Profilování CPU měří čas, který program stráví prováděním funkcí. Profilování CPU je užitečné pro identifikaci částí kódu, které spotřebovávají nejvíce času CPU.

The pprof balíček poskytuje funkce pro shromažďování profilů CPU, spouštění a zastavování profilování CPU a funkci pro zápis profilových dat do souborů.

Zde je návod, jak spustit a zastavit profil CPU a zapsat data do profilovacího souboru:

import (
"os"
"runtime/pprof"
)

funchlavní() {
f, chyba := os. Vytvořit("cpu_profile.prof")
-li chyba!= nula {
panika(chybovat)
}
odložit F. Zavřít()

chybovat = pprof. StartCPUProfile (f)
-li chyba!= nula {
panika(chybovat)
}
odložit pprof. StopCPUProfile()

// kód, který má být profilován
}

The hlavní funkce vytvoří soubor a zavře proud souboru pomocí a odložit prohlášení a Zavřít funkce instance souboru. The StartCPUProfile funkce spustí profil CPU a zapíše data do souboru a StopCPUProfile zavře proud profilu pomocí a odložit prohlášení. Po spuštění a zastavení profilu CPU můžete pokračovat v psaní kódu, který chcete analyzovat.

Zde je výsledek spuštění pprof příkaz se souborem profilu z programu:

Spuštění pprof příkaz se souborem spustí interaktivní shell, který vám umožní prozkoumat data profilování. Můžete použít příkazy jako horní a seznam pro zobrazení funkcí, jejichž provedení trvá nejvíce času.

Profilování paměti v Go

Profilování paměti je technika používaná k identifikaci úniků paměti a drahého využití paměti v kódu měřením využití paměti funkcemi v kódu.

Paměťový profil můžete spustit pomocí WriteHeapProfile funkce. The WriteHeapProfile funkce vezme instanci souboru a zapíše data profilu do souboru.

import (
"os"
"runtime/pprof"
)

funchlavní() {
f, chyba := os. Vytvořit("mem_profile.prof")
-li chyba!= nula {
panika(chybovat)
}
odložit F. Zavřít()

chybovat = pprof. WriteHeapProfile (f)
-li chyba!= nula {
panika(chybovat)
}

// kód, který má být profilován
}

The hlavní funkce vytvoří profilovací soubor a WriteHeapProfile funkce vezme instanci souboru jako argument a po zápisu do souboru vrátí typ chyby zápisu. Můžete dále zpracovat chybu podle vašeho požadavku.

Blokovat profilování s Go

Profilování bloků měří dobu čekání programu na synchronizační primitiva, jako jsou mutexy a kanály. Profilování bloků je užitečné pro identifikaci částí kódu, které mohou způsobit blokování.

The Vzhlédnout funkce vrací profil se jménem zadaného řetězce a Napsat funkce Vzhlédnout funkce zapíše do souboru snímek profilu ve formátu pprof.

Zde je návod, jak implementovat profilování bloků pro své programy Go:

import (
"os"
"runtime/pprof"
)

funchlavní() {
f, chyba := os. Vytvořit("profil_bloku.prof")
-li chyba!= nula {
panika(chybovat)
}
odložit F. Zavřít()

chybovat = pprof. Vzhlédnout("blok").WriteTo (f, 0)
-li chyba!= nula {
panika(chybovat)
}

// kód, který má být profilován
}

Program vytvoří soubor pro uložení dat profilu bloku, hledá bloky s Vzhlédnout a zapíše data profilu bloku do souboru.

Profilování stop s Go

Profilování trasování je technika pro měření provádění programu, včetně rutinního plánování a systémových volání. Profilování trasování je užitečné pro identifikaci překážek výkonu a pochopení interakcí mezi různými částmi programu.

The stopa balíček poskytuje funkce pro profilování trasování. Tento balíček je také součástí runtime balík.

import (
"os"
"runtime/trace"
)

funchlavní() {
f, chyba := os. Vytvořit("trace.out")
-li chyba!= nula {
panika(chybovat)
}
odložit F. Zavřít()

err = stopa. Start (f)
-li chyba!= nula {
panika(chybovat)
}
odložit stopa. Stop()

// kód, který má být profilován
}

Program vytvoří trasovací soubor pro uložení trasovacích dat, spustí tracer s Start funkce, která převezme instanci souboru a vrátí typ chyby a odloží tracer s Stop funkce.

Go také poskytuje nástroje pro formátování zdrojového kódu. Kromě profilovacích nástrojů můžete k udržování standardů kódu používat i formátovací nástroje. The gofmt tool je vestavěný formátovací nástroj, který můžete použít k formátování zdrojového kódu Go na základě specifikovaných pravidel pro vaše balíčky.