Как получить наиболее точную отметку времени в Node.js?
ps Моя версия Node.js - 0.8.X, и расширение node-microtime у меня не работает (сбой при установке)
javascript
node.js
v8
NiLL
источник
источник
Date.now()
Пожалуйста.process.hrtime()
process.hrtime()
не возвращает текущее время.В Node.js "время высокого разрешения" доступно через
process.hrtime
. Он возвращает массив, в котором для первого элемента указано время в секундах, а для второго элемента - оставшиеся наносекунды.Чтобы узнать текущее время в микросекундах, выполните следующие действия:
(Спасибо itaifrenkel за указание на ошибку в приведенном выше преобразовании.)
В современных браузерах время с точностью до микросекунд доступно как
performance.now
. См. Https://developer.mozilla.org/en-US/docs/Web/API/Performance/now для документации.Я реализовал эту функцию для Node.js на основе
process.hrtime
, что относительно сложно использовать, если вы хотите только вычислить разницу во времени между двумя точками в программе. См. Http://npmjs.org/package/performance-now . Согласно спецификации, эта функция сообщает время в миллисекундах, но это число с плавающей точкой с точностью до миллисекунды.В версии 2.0 этого модуля миллисекунды указываются относительно того, когда был запущен процесс узла (
Date.now() - (process.uptime() * 1000)
). Вам нужно добавить это к результату, если вы хотите, чтобы метка времени была похожа наDate.now()
. Также обратите внимание, что вам следует пересчитатьDate.now() - (process.uptime() * 1000)
. ОбаDate.now
иprocess.uptime
крайне ненадежны для точных измерений.Чтобы получить текущее время в микросекундах, вы можете использовать что-то вроде этого.
См. Также: Предоставляет ли JavaScript таймер с высоким разрешением?
источник
process.hrtime()
чтобы получить разницу. например,var startTime = process.hrtime();
а затемvar diff = process.hrtime(startTime);
.require("performance.now")
бытьrequire("performance-now")
?process.hrtime()
не возвращает текущее время.Известно, что
now
это:источник
process.hrtime()
не возвращает текущее время.Тип
BigInt
данных поддерживается начиная с Node.js 10.7.0. ( см. также объявление в блоге ). Для этих поддерживаемых версий Node.jsprocess.hrtime([time])
метод теперь считается «устаревшим» и заменяетсяprocess.hrtime.bigint()
методом.tl; dr
process.hrtime.bigint()
process.hrtime()
источник
Также есть https://github.com/wadey/node-microtime :
источник
Node.js нанотаймер
Я написал библиотеку / объект оболочки для node.js поверх
process.hrtime
вызова функции. Он имеет полезные функции, такие как синхронные и асинхронные задачи по времени, указываемые в секундах, миллисекундах, микро или даже нано, и следует синтаксису встроенного таймера javascript, чтобы быть знакомым.Объекты таймера также являются дискретными, поэтому вы можете иметь их сколько угодно, каждый со своим собственным
setTimeout
илиsetInterval
запущенным процессом.Это называется нанотаймер . Проверьте это!
источник
Чтобы работать с большей точностью
Date.now()
, но с точностью до миллисекунд с плавающей запятой:источник
Получить
hrtime
единым числом в одной строке:Array.reduce
при задании одного аргумента будет использовать первый элемент массива в качестве начальногоaccumulator
значения. Можно использовать0
в качестве начального значения, и это тоже сработает, но зачем делать лишнее* 0
.источник
есть пакеты npm, которые связываются с системной функцией gettimeofday (), которая в Linux возвращает отметку времени с точностью до микросекунд. Найдите npm
gettimeofday
. Вызов C быстрее, чемprocess.hrtime()
источник
Перепишите, чтобы помочь быстро понять:
Источник: https://nodejs.org/api/process.html#process_process_hrtime_time
источник
Я не очень горжусь этим решением, но вы можете получить метку времени в микросекундах или наносекундах таким образом:
Знайте, что:
Date.now()
Date.now()
на,Number(new Date())
чтобы получить метку времени в миллисекундахРедактировать:
Здесь решение иметь микросекунду с запятой, однако номер версии будет округлен изначально с помощью javascript. Поэтому, если вам нужен один и тот же формат каждый раз, вы должны использовать его версию String.
источник
process.hrtime () не дает текущих ts.
Это должно работать.
источник
лучше?
источник