Comment puis-je obtenir l'horodatage le plus précis dans Node.js?
ps Ma version de Node.js est 0.8.X et l' extension node-microtime ne fonctionne pas pour moi (crash lors de l'installation)
javascript
node.js
v8
NiLL
la source
la source
Date.now()
S'il vous plaît.process.hrtime()
process.hrtime()
ne renvoie pas l'heure actuelle.Dans Node.js, le "temps haute résolution" est rendu disponible via
process.hrtime
. Il renvoie un tableau avec le premier élément le temps en secondes et le second élément les nanosecondes restantes.Pour obtenir l'heure actuelle en microsecondes, procédez comme suit:
(Merci à itaifrenkel d' avoir signalé une erreur dans la conversion ci-dessus.)
Dans les navigateurs modernes, l'heure à la microseconde est disponible sous forme de
performance.now
. Voir https://developer.mozilla.org/en-US/docs/Web/API/Performance/now pour la documentation.J'ai fait une implémentation de cette fonction pour Node.js, basée sur
process.hrtime
, qui est relativement difficile à utiliser si vous voulez uniquement calculer la différence de temps entre deux points dans un programme. Voir http://npmjs.org/package/performance-now . Selon la spécification, cette fonction rapporte le temps en millisecondes, mais c'est un float avec une précision inférieure à la milliseconde.Dans la version 2.0 de ce module, les millisecondes signalées sont relatives au moment où le processus de nœud a été démarré (
Date.now() - (process.uptime() * 1000)
). Vous devez l'ajouter au résultat si vous souhaitez un horodatage similaire àDate.now()
. Notez également que vous devez recalculerDate.now() - (process.uptime() * 1000)
. Les deuxDate.now
etprocess.uptime
sont très peu fiables pour des mesures précises.Pour obtenir l'heure actuelle en microsecondes, vous pouvez utiliser quelque chose comme ceci.
Voir aussi: JavaScript fournit-il un minuteur haute résolution?
la source
process.hrtime()
pour obtenir un diff. par exemplevar startTime = process.hrtime();
et ensuitevar diff = process.hrtime(startTime);
.require("performance.now")
êtrerequire("performance-now")
?process.hrtime()
ne renvoie pas l'heure actuelle.Connu c'est
now
:la source
process.hrtime()
ne renvoie pas l'heure actuelle.Le
BigInt
type de données est pris en charge depuis Node.js 10.7.0. ( voir aussi l' annonce du billet de blog ). Pour ces versions prises en charge de Node.js, laprocess.hrtime([time])
méthode est désormais considérée comme «héritée», remplacée par laprocess.hrtime.bigint()
méthode.tl; dr
process.hrtime.bigint()
process.hrtime()
la source
Il y a aussi https://github.com/wadey/node-microtime :
la source
Node.js nanotimer
J'ai écrit une bibliothèque / objet wrapper pour node.js en plus de l'
process.hrtime
appel de fonction. Il a des fonctions utiles, comme le chronométrage des tâches synchrones et asynchrones, spécifiées en secondes, millisecondes, micro ou même nano, et suit la syntaxe du minuteur JavaScript intégré pour être familier.Les objets Timer sont également discrets, vous pouvez donc en avoir autant que vous le souhaitez, chacun avec son propre processus
setTimeout
ou sonsetInterval
exécution.Cela s'appelle nanotimer . Vérifiez-le!
la source
Pour travailler avec plus de précision que
Date.now()
, mais avec des millisecondes en précision flottante:la source
Obtenez
hrtime
un numéro unique sur une ligne:Array.reduce
, lorsqu'il est donné un seul argument, utilisera le premier élément du tableau commeaccumulator
valeur initiale . On pourrait utiliser0
comme valeur initiale et cela fonctionnerait également, mais pourquoi faire le supplément* 0
.la source
il existe des packages npm qui se lient à la fonction système gettimeofday (), qui renvoie un horodatage de précision à la microseconde sous Linux. Recherchez npm
gettimeofday
. Appeler C est plus rapide queprocess.hrtime()
la source
Une réécriture pour aider à une compréhension rapide:
Source: https://nodejs.org/api/process.html#process_process_hrtime_time
la source
Je ne suis pas si fier de cette solution mais vous pouvez avoir un horodatage en microseconde ou nanoseconde de cette manière:
Sachez que:
Date.now()
Date.now()
parNumber(new Date())
pour obtenir l'horodatage en millisecondesÉditer:
Voici une solution pour avoir la microseconde avec virgule, cependant, la version numérique sera arrondie nativement par javascript. Donc, si vous voulez le même format à chaque fois, vous devez utiliser la version String de celui-ci.
la source
process.hrtime () ne donne pas le ts actuel.
Cela devrait fonctionner.
la source
mieux?
la source