Popraw wydajność swoich programów Go za pomocą techniki profilowania.

Profilowanie jest techniką powszechnie stosowaną w cyklu tworzenia oprogramowania do analizy wydajności aplikacji programu, zwykle w celu porównania programów lub zidentyfikowania wąskich gardeł i obszarów wymagających poprawy program. Profilowanie obejmuje mierzenie i analizowanie różnych metryk, takich jak użycie pamięci, wykorzystanie procesora, czas wykonywania i inne statystyki na poziomie systemu.

Profilowanie ma na celu zidentyfikowanie części programu zużywających najwięcej zasobów, aby można go było zoptymalizować pod kątem lepszej wydajności. Profilowanie może również pomóc w debugowaniu, optymalizacji zarządzania pamięcią i dostrajaniu współbieżności.

Profilowanie w Go

W Go dostępnych jest wiele narzędzi do profilowania. Niektóre popularne narzędzia obejmują wbudowane narzędzie Go do profilowania pprof i popularne pakiety innych firm, takie jak pakiety Go Tool Trace i Go-Torch.

The pprof Pakiet jest częścią czas działania

instagram viewer
pakiet. The pprof pakiet zapewnia funkcjonalność do zapisywania danych profilowania środowiska uruchomieniowego w formatach obsługiwanych przez pprof narzędzie do wizualizacji może zinterpretować.

Oto jak możesz zaimportować plik pprof spakuj do swoich programów Go:

import"prof"

Go udostępnia kilka poleceń i flag pracować z kodem źródłowym. Uruchom następujące narzędzie polecenie dostępu do wyników profilowania w różnych formatach.

Iść narzędzie prof

Polecenie wyświetla szczegółowe informacje o użyciu pprof Komenda.

Profilowanie procesora w Go

Profilowanie procesora mierzy czas, jaki program spędza podczas wykonywania funkcji. Profilowanie procesora jest przydatne do identyfikowania części kodu, które zużywają najwięcej czasu procesora.

The pprof pakiet udostępnia funkcje do zbierania profili procesora, uruchamiania i zatrzymywania profilowania procesora oraz funkcję zapisywania danych profilu do plików.

Oto jak uruchamiać i zatrzymywać profil procesora oraz zapisywać dane w pliku profilowania:

import (
„os”
"runtime/prof"
)

funkcjagłówny() {
f, błąd := os. Tworzyć("profil_procesora.prof")
Jeśli błąd!= zero {
panika(błądzić)
}
odraczać F. Zamknąć()

błąd = pprof. StartCPUProfil (f)
Jeśli błąd!= zero {
panika(błądzić)
}
odraczać pprof. StopCPUProfil()

// kod do profilowania
}

The główny funkcja tworzy plik i zamyka strumień plików za pomocą a odraczać oświadczenie i Zamknąć funkcja instancji pliku. The StartCPUProfil funkcja uruchamia profil procesora i zapisuje dane do pliku, a funkcja StopCPUProfil zamyka strumień profilu za pomocą a odraczać oświadczenie. Po uruchomieniu i zatrzymaniu profilu procesora możesz przystąpić do pisania kodu, który chcesz przeanalizować.

Oto wynik uruchomienia pprof polecenie z plikiem profilu z programu:

Uruchamianie pprof polecenie z plikiem uruchamia interaktywną powłokę, która umożliwia eksplorację danych profilowania. Możesz użyć poleceń takich jak szczyt I lista aby wyświetlić funkcje, których wykonanie zajmuje najwięcej czasu.

Profilowanie pamięci w Go

Profilowanie pamięci to technika używana do identyfikowania wycieków pamięci i kosztownego użycia pamięci w kodzie poprzez pomiar użycia pamięci przez funkcje w kodzie.

Możesz uruchomić profil pamięci za pomocą WriteHeapProfil funkcjonować. The WriteHeapProfil funkcja pobiera instancję pliku i zapisuje dane profilu do pliku.

import (
„os”
"runtime/prof"
)

funkcjagłówny() {
f, błąd := os. Tworzyć(„mem_profile.prof”)
Jeśli błąd!= zero {
panika(błądzić)
}
odraczać F. Zamknąć()

błąd = pprof. WriteHeapProfil (f)
Jeśli błąd!= zero {
panika(błądzić)
}

// kod do profilowania
}

The główny funkcja tworzy plik profilowania, a plik WriteHeapProfil funkcja przyjmuje instancję pliku jako argument i zwraca typ błędu zapisu po zapisaniu do pliku. Możesz dalej obsługiwać błąd zgodnie z wymaganiami.

Blokuj profilowanie za pomocą Go

Profilowanie bloków mierzy czas oczekiwania programu na prymitywy synchronizacji, takie jak muteksy i kanały. Profilowanie bloków jest przydatne do identyfikowania części kodu, które mogą powodować blokowanie.

The Spojrzeć w górę funkcja zwraca profil z nazwą określonego ciągu, a Napisz do funkcja Spojrzeć w górę Funkcja zapisuje do pliku migawkę profilu w formacie pprof.

Oto jak możesz zaimplementować profilowanie blokowe dla swoich programów Go:

import (
„os”
"runtime/prof"
)

funkcjagłówny() {
f, błąd := os. Tworzyć(„block_profile.prof”)
Jeśli błąd!= zero {
panika(błądzić)
}
odraczać F. Zamknąć()

błąd = pprof. Spojrzeć w górę("blok").WriteTo (f, 0)
Jeśli błąd!= zero {
panika(błądzić)
}

// kod do profilowania
}

Program tworzy plik do przechowywania danych profilu bloku, szuka bloków z rozszerzeniem Spojrzeć w górę funkcji i zapisuje dane profilu bloku do pliku.

Śledź profilowanie za pomocą Go

Profilowanie śledzenia to technika mierzenia wykonania programu, w tym planowania goroutine i wywołań systemowych. Profilowanie śledzenia jest przydatne do identyfikowania wąskich gardeł wydajności i zrozumienia interakcji między różnymi częściami programu.

The namierzać pakiet udostępnia funkcje do profilowania śledzenia. Ten pakiet jest również częścią czas działania pakiet.

import (
„os”
„środowisko wykonawcze/śledzenie”
)

funkcjagłówny() {
f, błąd := os. Tworzyć("wyśledzić")
Jeśli błąd!= zero {
panika(błądzić)
}
odraczać F. Zamknąć()

błąd = ślad. Początek (f)
Jeśli błąd!= zero {
panika(błądzić)
}
odraczać namierzać. Zatrzymywać się()

// kod do profilowania
}

Program tworzy plik śledzenia do przechowywania danych śledzenia, uruchamia narzędzie śledzące z rozszerzeniem Początek funkcja, która przyjmuje instancję pliku i zwraca typ błędu oraz odracza śledzenie za pomocą Zatrzymywać się funkcjonować.

Go udostępnia również narzędzia do formatowania kodu źródłowego. Oprócz narzędzi do profilowania możesz używać narzędzi do formatowania, aby zachować standardy kodu. The gofmt to wbudowane narzędzie do formatowania, którego można użyć do sformatowania kodu źródłowego Go na podstawie określonych reguł dla pakietów.