Контроль времени выполнения в Go до миллисекунд

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

godefertime.since

👁 В продакшене важно не только что делает функция, но и как быстро она это делает. Особенно если это хендлер, запрос к БД или внешний API. Один из удобных способов — встроить измерение времени через defer и time.Since.

📝 Минималистичное, но мощное решение:

package main

import (
  "log"
  "time"
)

func timed(name string) func() {
  start := time.Now()
  return func() {
    log.Printf("%s took %s", name, time.Since(start))
  }
}

func main() {
  defer timed("HeavyTask")()
  time.Sleep(2 * time.Second) // имитация тяжёлой операции
}

📌 Что происходит:

  • timed возвращает функцию, которая при вызове логирует длительность
  • Через defer она откладывается до конца функции
  • time.Since(start) считает, сколько прошло времени
  • Можно использовать в любой функции, не дублируя код

🔎 Подходит для:

  • Обёртки над HTTP-хендлерами или gRPC-методами
  • Замеров времени операций с БД или кэшем
  • Логирования длительных фоновых задач

❗️ Лёгкое, лаконичное решение, которое можно встроить даже в продовые микросервисы без внешних зависимостей.

tags: #go #разработка #полезно

❤️ @recura_tech

Скриншот тёмного редактора с кодом на Go: функция timed с defer и time.Since, имитация длительной операции, логотип RECURA.
Пример минималистичного замера времени в Go

Читайте так же