«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Время идти и его двое часов

Время идти и его двое часов

Опубликовано 18 ноября 2024 г.
Просматривать:432

Go time and its two clocks

Чтобы рассчитать временной интервал в Go, вы можете использовать

start := time.Now()
// long time consuming task
duration := time.Since(start)

Но знаете ли вы, что пакет времени в Go на самом деле содержит два времени, и time.Since() на самом деле измеряет только время обработки (монотонные часы), а не реальное время (настенные часы)?

Например, если задача довольно длинная, длилась всю ночь, и ваш компьютер перешел в спящий режим. Затем утром вы можете прийти и увидеть, что продолжительность длится всего 4 часа, хотя всего прошло 10 часов.

Пакет времени в Go гласит, что

Операционные системы предоставляют как «настенные часы», которые могут быть изменены для синхронизации часов, так и «монотонные часы», которые не являются таковыми. Общее правило таково: настенные часы предназначены для определения времени, а монотонные — для измерения времени.

В приведенном выше примере на самом деле вы говорите о том, что ваша программа активно работала в течение 4 часов, но компьютер спит 6 часов, поэтому в общей сложности вы ждали 10 часов. Если бы компьютер не спал, это было бы сделано за 4 часа.

Так что же делать, если вы хотите измерить время стены? Вы можете использовать функцию Round(0). t = t.Round(0) удалит монотонные часы в t.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/jingshao_chen_02a2352f476/go-time-and-its-two-locks-3p0p?1. Если есть какие-либо нарушения, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3