Вы делаете много дополнительных вычислений ...
// polyfill for window.performance.now
var performance = global.performance || {}
var performanceNow =
performance.now ||
performance.mozNow ||
performance.msNow ||
performance.oNow ||
performance.webkitNow ||
function(){ return (new Date()).getTime() }
function clock(start) {
if ( !start ) return performanceNow();
var end = performanceNow();
return end - start;
}
module.exports = clock;
Этот код должен давать те же результаты.(Math.round опущено)
Все методы (performance.now & Date.getTime) возвращают время в миллисекундах.Насколько я понимаю, это ожидаемый вывод. Производительность
теперь в некоторых браузерах (Chrome) может предоставить вам дополнительную долю миллисекунды, тогда возвращаемое значение будет не-int
, например
> performance.now()
160693.10000000405
Также проверьте производительность методов извлечения времени:
На Chrome и на моем компьютере Date.now () дает максимальную скорость, утраивая производительность performance.now ()
см. https://jsperf.com/get-time-3482/1
Date.now performance.now
Chrome 10 MOps 3.5 MOps
Safari 10 MOps 7 MOps
Если вы выполняете несколько прогонов или измеряете большие интервалы времени, дополнительная наносекундная точность может не потребоваться
Тогда вы получите код IE9 +:
var now = Date.now;
function clock(start) {
if ( !start ) return now();
var end = now();
return end - start;
}
module.exports = clock;
=====
Дополнительные примечания:
Производительность performance.now по сравнению с Date.now может и должна отличаться на процессорах Intel и AMD CPU
Они используют разные инструкции процессора для получения времени, пожалуйста, посмотрите здесь некоторые детали, http://zeromq.org/results:more-precise-0mq-tests