Есть ли способ получить текущее время в наносекундах с помощью JavaScript?

Итак, я знаю, что могу получить текущее время в миллисекундах с помощью JavaScript. Но можно ли вместо этого получить текущее время в наносекундах?

6 ответов


достигните точности микросекунды в большинств браузерах используя:

window.performance.now()

Читайте также:


основываясь на ответе Джеффри, чтобы получить абсолютный штамп времени (как хотел OP), код будет:

var TS = window.performance.timing.navigationStart + window.performance.now();

результат в миллисекундных единицах, но является значением с плавающей запятой, как сообщается"С точностью до одной тысячной миллисекунды".


в серверных средах, таких как Node.js вы можете использовать следующую функцию, чтобы получить время в наносекунде

function getNanoSecTime() {
  var hrTime = process.hrtime();
  return hrTime[0] * 1000000000 + hrTime[1];
}

также получите микро-секунды аналогичным образом:

function getMicSecTime() {
  var hrTime = process.hrtime();
  return hrTime[0] * 1000000 + parseInt(hrTime[1] / 1000);
}

нет. Нет никаких шансов, что вы получите наносекундную точность на уровне JavaScript.

Если вы пытаетесь проверить какую-то очень быструю операцию, поместите ее в цикл, который запускает ее несколько тысяч раз.


JavaScript записывает время в миллисекундах, поэтому вы не сможете получить время с такой точностью. The smart-aleck ответ "умножить на 1,000,000".


да! Попробуйте отличный sazze это нано-времени

let now = require('nano-time');
now(); // '1476742925219947761' (returns as string due to JS limitation)