Hacky & Tipy
Go profiling s pprof: praktický průvodce
Go má skvělé zabudované profiling nástroje. Jak je použít.
Aktivace pprof
import _ "net/http/pprof"
go func() { log.Println(http.ListenAndServe(":6060", nil)) }()
go func() { log.Println(http.ListenAndServe(":6060", nil)) }()
CPU profiling
go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30
Memory
go tool pprof http://localhost:6060/debug/pprof/heap
Goroutines
curl http://localhost:6060/debug/pprof/goroutine?debug=1
Flame graphs
go tool pprof -http=:8080 cpu.prof
Benchmarky
func BenchmarkMyFunc(b *testing.B) { for i := 0; i < b.N; i++ { MyFunc() } }
go test -bench=. -benchmem
go test -bench=. -benchmem
Optimalizace
- sync.Pool pro opakované alokace
- Prealokace slices
- strings.Builder
- Buffered channels
Shrnutí
pprof je zabudovaný a výkonný. CPU + heap stačí na 90 % problémů.