Как измерить производительность приложения

«Как измерить производительность приложения» — вопрос из категории DevOps, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для измерения производительности в Go можно использовать:

  1. Встроенные инструменты:
start := time.Now()
// Код для измерения
elapsed := time.Since(start)
fmt.Printf("Execution time: %s", elapsed)
  1. pprof - мощный профилировщик:
import _ "net/http/pprof"

go func() {
    log.Println(http.ListenAndServe("localhost:6060", nil))
}()

Затем анализировать через go tool pprof http://localhost:6060/debug/pprof/profile

  1. Benchmark-тесты:
func BenchmarkFunction(b *testing.B) {
    for i := 0; i < b.N; i++ {
        // Тестируемый код
    }
}

Запуск: go test -bench=. -benchmem

  1. runtime/pprof для профилирования CPU и памяти

  2. expvar для мониторинга метрик в реальном времени

Для комплексного анализа лучше использовать комбинацию этих инструментов, начиная с benchmark-тестов для точечных измерений и переходя к pprof для детального анализа узких мест.