Verbessern Sie die Leistung Ihrer Go-Programme mithilfe der Profiling-Technik.

Profiling ist eine Technik, die häufig im Softwareentwicklungszyklus verwendet wird, um die Leistung von a Programm, in der Regel für einen Vergleich zwischen Programmen oder zur Identifizierung von Engpässen und Verbesserungsbereichen für a Programm. Die Profilerstellung umfasst das Messen und Analysieren verschiedener Metriken wie Speichernutzung, CPU-Auslastung, Ausführungszeit und andere Statistiken auf Systemebene.

Das Profiling zielt darauf ab, Teile eines Programms zu identifizieren, die die meisten Ressourcen verbrauchen, damit es für eine bessere Leistung optimiert werden kann. Die Profilerstellung kann auch beim Debuggen, Optimieren der Speicherverwaltung und Parallelitätsoptimierung hilfreich sein.

Profilerstellung in Go

Es gibt viele Tools für die Profilerstellung in Go. Einige beliebte Tools sind das integrierte pprof-Profilerstellungstool von Go und beliebte Pakete von Drittanbietern wie die Pakete Go Tool Trace und Go-Torch.

instagram viewer

Der pprof Paket ist Teil der Laufzeit Paket. Der pprof -Paket bietet Funktionen zum Schreiben von Laufzeitprofildaten in Formaten, die die pprof Visualisierungstool interpretieren kann.

So können Sie die importieren pprof Paket in Ihre Go-Programme:

importieren"prof"

Go bietet mehrere Befehle und Flags mit dem Quellcode zu arbeiten. Führen Sie Folgendes aus Werkzeug Befehl, um auf Profiling-Ergebnisse in verschiedenen Formaten zuzugreifen.

gehen Werkzeug prof

Der Befehl gibt die Nutzungsdetails über die aus pprof Befehl.

CPU-Profilierung in Go

CPU-Profiling misst die Zeit, die ein Programm mit der Ausführung von Funktionen verbringt. Die CPU-Profilerstellung ist nützlich, um Codeteile zu identifizieren, die die meiste CPU-Zeit verbrauchen.

Der pprof Das Paket bietet Funktionen zum Sammeln von CPU-Profilen, zum Starten und Stoppen der CPU-Profilerstellung und eine Funktion zum Schreiben von Profildaten in Dateien.

So starten und stoppen Sie ein CPU-Profil und schreiben die Daten in eine Profiling-Datei:

importieren (
"os"
"Laufzeit/pprof"
)

Funkhauptsächlich() {
f, err := os. Erstellen("cpu_profile.prof")
Wenn äh != Null {
Panik(irren)
}
verschieben F. Schließen()

Fehler = prof. StartCPUProfile (f)
Wenn äh != Null {
Panik(irren)
}
verschieben pprof. StopCPUProfile()

// zu profilierender Code
}

Der hauptsächlich Funktion erstellt eine Datei und schließt den Dateistream mit a verschieben Erklärung und die Schließen Funktion der Dateiinstanz. Der CPU-Profil starten Funktion startet ein CPU-Profil und schreibt die Daten in die Datei, und die CPU-Profil stoppen schließt den Profilstream mit a verschieben Stellungnahme. Nach dem Starten und Stoppen des CPU-Profils können Sie mit dem Schreiben des Codes fortfahren, den Sie analysieren möchten.

Hier ist das Ergebnis der Ausführung von pprof Befehl mit der Profildatei aus dem Programm:

Laufen die pprof Befehl mit einer Datei startet eine interaktive Shell, mit der Sie die Profildaten untersuchen können. Sie können Befehle wie verwenden Spitze Und Liste um die Funktionen anzuzeigen, deren Ausführung am längsten dauert.

Speicherprofilerstellung in Go

Die Speicherprofilerstellung ist eine Technik, die verwendet wird, um Speicherlecks und teure Speichernutzung im Code zu identifizieren, indem die Speichernutzung von Funktionen im Code gemessen wird.

Mit können Sie ein Speicherprofil starten WriteHeapProfile Funktion. Der WriteHeapProfile Die Funktion übernimmt die Dateiinstanz und schreibt die Profildaten in die Datei.

importieren (
"os"
"Laufzeit/pprof"
)

Funkhauptsächlich() {
f, err := os. Erstellen("mem_profile.prof")
Wenn äh != Null {
Panik(irren)
}
verschieben F. Schließen()

Fehler = prof. WriteHeapProfile (f)
Wenn äh != Null {
Panik(irren)
}

// zu profilierender Code
}

Der hauptsächlich Funktion erstellt eine Profildatei und die WriteHeapProfile Die Funktion übernimmt die Dateiinstanz als Argument und gibt nach dem Schreiben in die Datei einen Schreibfehlertyp zurück. Sie können weiter Behandeln Sie den Fehler gemäß Ihrer Anforderung.

Blockieren Sie die Profilerstellung mit Go

Block-Profiling misst die Wartezeit eines Programms auf Synchronisierungsprimitive wie Mutexe und Kanäle. Block-Profiling ist nützlich, um Teile des Codes zu identifizieren, die eine Blockierung verursachen können.

Der Nachschlagen Die Funktion gibt das Profil mit dem Namen einer angegebenen Zeichenfolge zurück, und die WriteTo Funktion der Nachschlagen Die Funktion schreibt einen Schnappschuss des Profils im pprof-Format in die Datei.

So können Sie Block-Profiling für Ihre Go-Programme implementieren:

importieren (
"os"
"Laufzeit/pprof"
)

Funkhauptsächlich() {
f, err := os. Erstellen("block_profile.prof")
Wenn äh != Null {
Panik(irren)
}
verschieben F. Schließen()

Fehler = prof. Nachschlagen("Block").WriteTo (f, 0)
Wenn äh != Null {
Panik(irren)
}

// zu profilierender Code
}

Das Programm erstellt eine Datei zum Speichern der Blockprofildaten, sucht nach Blöcken mit der Nachschlagen Funktion und schreibt die Blockprofildaten in die Datei.

Trace-Profilierung mit Go

Trace-Profiling ist eine Technik zum Messen der Ausführung eines Programms, einschließlich Goroutine-Scheduling und Systemaufrufen. Trace-Profiling ist nützlich, um Leistungsengpässe zu identifizieren und die Wechselwirkungen zwischen verschiedenen Programmteilen zu verstehen.

Der verfolgen -Paket bietet Funktionen für die Trace-Profilerstellung. Dieses Paket ist auch ein Teil des Laufzeit Paket.

importieren (
"os"
"Laufzeit/Trace"
)

Funkhauptsächlich() {
f, err := os. Erstellen("spur.aus")
Wenn äh != Null {
Panik(irren)
}
verschieben F. Schließen()

Fehler = Spur. Start (f)
Wenn äh != Null {
Panik(irren)
}
verschieben verfolgen. Stoppen()

// zu profilierender Code
}

Das Programm erstellt eine Trace-Datei zum Speichern der Trace-Daten, startet den Tracer mit der Start Funktion, die die Dateiinstanz aufnimmt und einen Fehlertyp zurückgibt und den Tracer mit dem verzögert Stoppen Funktion.

Go bietet auch Tools zum Formatieren von Quellcode. Neben den Profilerstellungstools können Sie die Formatierungstools verwenden, um Codestandards beizubehalten. Der gofmt tool ist ein integriertes Formatierungstool, mit dem Sie Ihren Go-Quellcode basierend auf festgelegten Regeln für Ihre Pakete formatieren können.