Функция time.Since
Функция time.Since возвращает время, прошедшее с заданного момента времени до текущего.
В качестве единственного параметра она принимает значение типа time.Time и возвращает результат типа time.Duration.
Эта функция является удобной альтернативой вызову time.Now().Sub(t) и часто используется для измерения времени выполнения операций.
Синтаксис
time.Since(t)
где t - момент времени, с которого нужно отсчитать прошедшее время.
Пример с измерением времени выполнения
package main
import (
"fmt"
"time"
)
func main() {
start := time.Now()
time.Sleep(2 * time.Second)
elapsed := time.Since(start)
fmt.Println(elapsed)
}
Результат выполнения кода:
"2.001234567s"
В этом примере мы фиксируем время начала операции, выполняем задержку в 2 секунды,
а затем с помощью time.Since вычисляем фактическое прошедшее время.
Пример с различными операциями
package 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)
}
Результат выполнения кода:
"Время выполнения цикла: 2.345ms"
"Общее время: 102.456ms"
Здесь мы измеряем время выполнения вычислений и затем добавляем задержку, чтобы увидеть разницу между промежуточным и общим временем.
Преобразование в различные единицы измерения
package 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())
}
Результат выполнения кода:
"Наносекунды: 1500123456"
"Микросекунды: 1500123"
"Миллисекунды: 1500"
"Секунды: 1.500123456"
"Минуты: 0.0250020576"
Полученную продолжительность можно преобразовать в различные единицы измерения
с помощью методов типа time.Duration.
Смотрите также
-
функцию
time.Until,
которая вычисляет время до указанного момента -
метод
time.Time.Sub,
который вычисляет разницу между двумя моментами времени -
функцию
time.Now,
которая возвращает текущее время -
тип
time.Duration,
который представляет собой интервал времени