Есть много способов получить временные метки в Nodejs, например:
1. Новая дата (). GetTime ()
2. Date.Now ()
3. process.uptime ()
4. Process.hrtime ()
Если вы хотите получить метку времени, вы можете использовать эти методы. Так в чем же разница между этими методами?
Новая дата (). getTime () и date.now ()
Эти методы связаны с количеством миллисекундов системы, работающей в узле. Эффект +Новой Date () Метод написания такой же, как и в новой дате (). GetTime () .
В сценариях, где часто используются временные метки, вам необходимо обратить внимание на производительность метода. Среди этих методов Date.Now () имеет наилучшую производительность. Вы можете проверить его с небольшим кодом:
var t1 = new date (). gettime (); var t2 = t1; var i = 0, count = 10000000, интервал = 0; для (i = 0; i <count; i ++) {t2 = new date (). gettime (); интервал = (t2 - t1);} интервал = (t2 - t1); console.log ('【new date (). getTime ()】 Интервал:', интервал); t1 = новая дата (). getTime (); для (i = 0; i <count; i ++) {t2 =+новая дата; интервал = (t2 - t1);} интервал = (t2 - t1); console.log ('【+Новая дата】 Интервал:', интервал); t1 = новая дата (). gettime (); for (i = 0; i <count; i ++) {t2 = date.now (); интервал = (t2 - t1);} интервал = (t2 - t1); console.log ('【date.now ()】 Интервал:', интервал);Результат вывода:
【Новая дата (). GetTime ()】 Интервал: 1583
【+Новая дата】 Интервал: 2189
【Date.now ()】 Интервал: 891
Если вы просто получаете временную метку, то использование date.now () - лучший способ сделать это, но если вы хотите рассчитать разницу во времени, эти методы будут иметь некоторые проблемы: иногда возникают небольшие обратные вызовы в системном времени управляемой среды, поэтому полученная разница во времени неточна, а иногда некоторые ошибки будут запускаться.
process.hrtime ()
Этот метод состоит в том, чтобы получить точный объект TimeMant на основе любой прошлой момент времени, и время от настоящего: [секунды, наносекунд]]
> Process.hrtime () [3197146, 563552237]
Этот метод не имеет ничего общего с системным временем, поэтому он не будет влиять на дрейф системных часов, и при расчете разницы во времени не будет никаких ошибок.
Но все всегда там - -
Что если он используется в месте, где его называют часто?
var t1 = new Date (). getTime (); var t2 = t1; var i = 0, count = 10000000, интервал = 0; var hrmime1 = process.hrtime (); var hrtime2 = hrtime1; t1 = new Date (). getTime (); для (i = 0; I <count; i ++) {hrtime2 = process.hrtime (h = 0; i <count; i ++) {hrtime2 = process.hrtime (h = 0; Date (). Gettime (); интервал = parseint (hrtime2 [0] * 1e3 + hrtime2 [1] * 1e -6); console.log ('【hrtime】 Интервал:', интервал, t2 - t1); 【hrTime】interval: 6412 6413 Если вы правильно помните, то же количество творений, дата () выше составляет около 900 мс!
Process.hrtime () слишком медленный! ! !
Оказывается, что когда Nodejs обрабатывает высокое время, расчет относительно сложный, занимает много системных ресурсов и имеет медленную скорость, поэтому этот метод не подходит для высокочастотных приложений. См. Process.uptime () ниже
process.uptime ()
Эта функция использует время начала Nodejs для получения второй временной метки, которая является точной для миллисекундов:
Process.Uptime
Ввод: 6.419
Эта функция основана на времени запуска узла и не будет влиять на дрейф системных часов и подходит для расчета разницы во времени.
Так как же производительность нескольких вызовов?
var t1 = new date (). gettime (); var t2 = t1; var i = 0, count = 10000000, интервал = 0; t1 = process.uptime ()*1000; for (i = 0; i <count; i ++) {t2 = process.uptime ()*1000; // интервал = (t2 - t1);} интервал = (t2 - t1); console.log ('【process.uptime ()】 Интервал:', интервал);Вывод: [process.uptime ()] Интервал: 954
По сравнению с Process.hrtime (), он создает много производительности ~
Не считай так точно, это быстро!
Тогда вам нужно рассчитать разницу во времени на высокой частоте!
Вышеуказанное все о Nodejs, получающих разницу между временем и временем. Я надеюсь, что это будет полезно для всех при использовании Nodejs.