Ответ
Для измерения производительности в Go можно использовать:
- Встроенные инструменты:
start := time.Now()
// Код для измерения
elapsed := time.Since(start)
fmt.Printf("Execution time: %s", elapsed)
- pprof - мощный профилировщик:
import _ "net/http/pprof"
go func() {
log.Println(http.ListenAndServe("localhost:6060", nil))
}()
Затем анализировать через go tool pprof http://localhost:6060/debug/pprof/profile
- Benchmark-тесты:
func BenchmarkFunction(b *testing.B) {
for i := 0; i < b.N; i++ {
// Тестируемый код
}
}
Запуск: go test -bench=. -benchmem
-
runtime/pprof для профилирования CPU и памяти
-
expvar для мониторинга метрик в реальном времени
Для комплексного анализа лучше использовать комбинацию этих инструментов, начиная с benchmark-тестов для точечных измерений и переходя к pprof для детального анализа узких мест.