首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Node.js中获取microtime?

如何在Node.js中获取microtime?
EN

Stack Overflow用户
提问于 2012-07-31 00:32:24
回答 14查看 153.1K关注 0票数 111

如何在Node.js中获得最准确的时间戳?

ps我的Node.js版本是0.8.X,node-microtime extension对我不起作用(安装时崩溃)

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2012-07-31 00:34:16

new Date().getTime()?这为您提供了以毫秒为单位的时间戳,这是JS为您提供的最精确的时间戳。

更新:正如沃恩所说,process.hrtime()在Node.js中是可用的-它的分辨率是纳秒,因此它的分辨率更高。此函数返回一个包含当前实时高分辨率值的数组[seconds, nanoseconds],但请注意,它是not tied to any specific clock,这意味着两个连续值之间的差异会告诉您经过了多少时间,但单个值不会告诉您任何有意义的信息。

另请注意,从节点v10开始,process.hrtime()已被标记为“遗留”,您应该改用process.hrtime.bigint(),这将生成单个BigInt编号而不是数组。

票数 117
EN

Stack Overflow用户

发布于 2013-08-13 06:05:22

在Node.js中,“高分辨率时间”是通过process.hrtime提供的。它返回一个数组,第一个元素是以秒为单位的时间,第二个元素是剩余的纳秒。

要获取以微秒为单位的当前时间,请执行以下操作:

代码语言:javascript
复制
var hrTime = process.hrtime()
console.log(hrTime[0] * 1000000 + hrTime[1] / 1000)

(感谢itaifrenkel指出上述转换中的一个错误。)

在现代浏览器中,可以使用微秒精度的时间作为performance.now。有关文档,请参阅https://developer.mozilla.org/en-US/docs/Web/API/Performance/now

我已经基于process.hrtime为Node.js实现了这个函数,如果你只想计算程序中两个点之间的时间差,那么使用这个函数相对比较困难。参见http://npmjs.org/package/performance-now。根据规范,此函数以毫秒为单位报告时间,但它是一个精度低于毫秒的浮点型。

在此模块的2.0版中,报告的毫秒数是相对于启动节点进程的时间(Date.now() - (process.uptime() * 1000))。如果您想要一个类似于Date.now()的时间戳,则需要将其添加到结果中。还要注意的是,你应该重新计算Date.now() - (process.uptime() * 1000)。对于精确的测量,Date.nowprocess.uptime都是非常不可靠的。

要获得以微秒为单位的当前时间,可以使用如下代码。

代码语言:javascript
复制
var loadTimeInMS = Date.now()
var performanceNow = require("performance-now")
console.log((loadTimeInMS + performanceNow()) * 1000)

另请参阅:Does JavaScript provide a high resolution timer?

票数 195
EN

Stack Overflow用户

发布于 2016-08-12 21:38:40

代码语言:javascript
复制
now('milli'); //  120335360.999686
now('micro') ; // 120335360966.583
now('nano') ; //  120335360904333

已知now是:

代码语言:javascript
复制
const now = (unit) => {
  
  const hrTime = process.hrtime();
  
  switch (unit) {
    
    case 'milli':
      return hrTime[0] * 1000 + hrTime[1] / 1000000;
      
    case 'micro':
      return hrTime[0] * 1000000 + hrTime[1] / 1000;
      
    case 'nano':
    default:
      return hrTime[0] * 1000000000 + hrTime[1];
  }
  
};
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11725691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档