Функция time.Since

Функция time.Since возвращает время, прошедшее с заданного момента времени до текущего. В качестве единственного параметра она принимает значение типа time.Time и возвращает результат типа time.Duration. Эта функция является удобной альтернативой вызову time.Now().Sub(t) и часто используется для измерения времени выполнения операций.

Синтаксис

gotime.Since(t)

где t - момент времени, с которого нужно отсчитать прошедшее время.

Пример с измерением времени выполнения

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  start := time.Now()
  time.Sleep(2 * time.Second)
  elapsed := time.Since(start)
  fmt.Println(elapsed)
}

Результат выполнения кода:

go"2.001234567s"

В этом примере мы фиксируем время начала операции, выполняем задержку в 2 секунды, а затем с помощью time.Since вычисляем фактическое прошедшее время.

Пример с различными операциями

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  start := time.Now()
  
  // Имитация работы
  sum := 0
  for i := 0; i < 1000000; i++ {
    sum += i
  }
  
  elapsed := time.Since(start)
  fmt.Println("Время выполнения цикла:", elapsed)
  
  time.Sleep(100 * time.Millisecond)
  elapsed2 := time.Since(start)
  fmt.Println("Общее время:", elapsed2)
}

Результат выполнения кода:

go"Время выполнения цикла: 2.345ms"
"Общее время: 102.456ms"

Здесь мы измеряем время выполнения вычислений и затем добавляем задержку, чтобы увидеть разницу между промежуточным и общим временем.

Преобразование в различные единицы измерения

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  start := time.Now()
  time.Sleep(1500 * time.Millisecond)
  elapsed := time.Since(start)
  
  fmt.Println("Наносекунды:", elapsed.Nanoseconds())
  fmt.Println("Микросекунды:", elapsed.Microseconds())
  fmt.Println("Миллисекунды:", elapsed.Milliseconds())
  fmt.Println("Секунды:", elapsed.Seconds())
  fmt.Println("Минуты:", elapsed.Minutes())
}

Результат выполнения кода:

go"Наносекунды: 1500123456"
"Микросекунды: 1500123"
"Миллисекунды: 1500"
"Секунды: 1.500123456"
"Минуты: 0.0250020576"

Полученную продолжительность можно преобразовать в различные единицы измерения с помощью методов типа time.Duration.

Смотрите также

  • функцию time.Until,
    которая вычисляет время до указанного момента
  • метод time.Time.Sub,
    который вычисляет разницу между двумя моментами времени
  • функцию time.Now,
    которая возвращает текущее время
  • тип time.Duration,
    который представляет собой интервал времени