最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs如何獲取時間戳與時間差

 更新時間:2016年08月03日 10:28:56   投稿:daisy  
本文詳細介紹了nodejs獲取時間戳與時間差的多種方法,對平時nodejs的使用很有幫助,下面一起來看看吧。

Nodejs中獲取時間戳的方法有很多種,例如:

    1.new Date().getTime()

    2.Date.now()

    3.process.uptime()

    4.process.hrtime()

平時想獲取一個時間戳的話,用這些方法都可以,那么這些方法有什么區(qū)別呢?

new Date().getTime()和Date.now()

這些方法是通過node運行環(huán)境的系統(tǒng)時間毫秒數, +new Date() 寫法的效果和 new Date().getTime() 效果相同。

在需要頻繁使用時間戳的場景中,需要關注方法性能,這幾種方法中 Date.now() 的性能最佳,可以通過一點代碼來測試:

var t1 = new Date().getTime();
var t2 = t1;
var i = 0, count = 10000000, interval = 0;

for(i = 0; i < count; i++)
{
  t2 = new Date().getTime();
  interval = (t2 - t1);
}
interval = (t2 - t1);
console.log('【new Date().getTime()】interval: ', interval);

t1 = new Date().getTime();
for(i = 0; i < count; i++)
{
  t2 = +new Date;
  interval = (t2 - t1);
}
interval = (t2 - t1);
console.log('【+new Date】interval: ', interval);

t1 = new Date().getTime();
for(i = 0; i < count; i++)
{
  t2 = Date.now();
  interval = (t2 - t1);
}
interval = (t2 - t1);
console.log('【Date.now()】interval: ', interval);

輸出結果:

【new Date().getTime()】interval: 1583

【+new Date】interval: 2189

【Date.now()】interval: 891

如果只是獲取時間戳,那么使用Date.now()是最佳的做法,但是如果要計算時間差,這幾個方法就會有點問題:運行環(huán)境的系統(tǒng)時間有時候是會有微小回調的,這樣得到的時間差就不精確了,有時候會引發(fā)某些BUG。

process.hrtime()

這種方式是根據任意取的一個過去的時間點,距離現在的時間來獲取一個精確的時間戳對象:[秒, 納秒]

> process.hrtime()
[ 3197146, 563552237 ]

這種方式和系統(tǒng)時間無關,因此不會受到系統(tǒng)時鐘漂移的影響,用來計算時間差的時候就不會有BUG了。

但是,萬事總有但是 - -

如果用在一個被頻繁調用的地方呢?

var t1 = new Date().getTime();
var t2 = t1;
var i = 0, count = 10000000, interval = 0;

var hrTime1 = process.hrtime();
var hrTime2 = hrTime1;

t1 = new Date().getTime();
for(i = 0; i < count; i++)
{
  hrTime2 = process.hrtime(hrTime1);
}
t2 = new Date().getTime();
interval = parseInt(hrTime2[0] * 1e3 + hrTime2[1] * 1e-6);
console.log('【hrTime】interval: ', interval, t2 - t1);

【hrTime】interval: 6412 6413 沒有記錯的話,相同的創(chuàng)建次數,上面的Date.now()可是900ms左右啊!

process.hrtime()也太慢了有木有!??!

原來nodejs處理高精度時間的時候,計算比較復雜,占用系統(tǒng)資源多,速度慢,那么在高頻應用的地方就不適合用這個方法了。下面請看process.uptime()

process.uptime()

此函數是通過nodejs啟動運行時間來得到一個秒數時間戳,精確到毫秒:

process.uptime

輸入:6.419

此函數以node啟動時間為準,同樣也不會受系統(tǒng)時鐘漂移影響,適合用來計算時間差。

那么多次調用性能如何呢?

var t1 = new Date().getTime();
var t2 = t1;
var i = 0, count = 10000000, interval = 0;

t1 = process.uptime()*1000;
for(i = 0; i < count; i++)
{
  t2 = process.uptime()*1000;
  //interval = (t2 - t1);
}
interval = (t2 - t1);
console.log('【process.uptime()】interval: ', interval);

輸出:【process.uptime()】interval: 954

process.hrtime()相比性能就搞出很多了~

不用算那么精確,就是快!

那么需要高頻計算時間差的場合,就是你了!

以上就是nodejs獲取時間戳與時間差的全部內容,希望對大家平時使用nodejs的時候能有所幫助。

相關文章

  • 充分發(fā)揮Node.js程序性能的一些方法介紹

    充分發(fā)揮Node.js程序性能的一些方法介紹

    這篇文章主要介紹了充分發(fā)揮Node.js程序性能的一些方法介紹,Node.js是把JavaScript用于服務器端的框架,需要的朋友可以參考下
    2015-06-06
  • 詳解nodejs 開發(fā)企業(yè)微信第三方應用入門教程

    詳解nodejs 開發(fā)企業(yè)微信第三方應用入門教程

    這篇文章主要介紹了詳解nodejs 開發(fā)企業(yè)微信第三方應用入門教程,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • Nodejs實現的操作MongoDB數據庫功能完整示例

    Nodejs實現的操作MongoDB數據庫功能完整示例

    這篇文章主要介紹了Nodejs實現的操作MongoDB數據庫功能,結合完整實例形式分析了nodejs針對MongoDB數據庫的連接及增刪改查基本操作技巧,需要的朋友可以參考下
    2019-02-02
  • Node快速切換版本、版本回退(降級)、版本更新(升級)

    Node快速切換版本、版本回退(降級)、版本更新(升級)

    這篇文章主要介紹了Node快速切換版本、版本回退(降級)、版本更新(升級),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • 詳解Nodejs mongoose

    詳解Nodejs mongoose

    Mongoose 是在nodejs環(huán)境下,對mongodb進行便捷操作的對象模型工具。本文介紹解(翻)密(譯)Mongoose插件。這篇文章給大家詳細介紹了Nodejs mongoose 的相關知識,感興趣的朋友一起看看吧
    2018-06-06
  • 實戰(zhàn)node靜態(tài)文件服務器的示例代碼

    實戰(zhàn)node靜態(tài)文件服務器的示例代碼

    本篇文章主要介紹了實戰(zhàn)node靜態(tài)文件服務器的示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • nodejs實現獲取當前url地址及url各種參數值

    nodejs實現獲取當前url地址及url各種參數值

    這篇文章主要介紹了nodejs實現獲取當前url地址及url各種參數值,本文直接給出代碼實例,需要的朋友可以參考下
    2015-06-06
  • Ubuntu中搭建Nodejs開發(fā)環(huán)境過程分享

    Ubuntu中搭建Nodejs開發(fā)環(huán)境過程分享

    這篇文章主要介紹了Ubuntu中搭建Nodejs開發(fā)環(huán)境過程,比較郁悶的是apt-get安裝失敗了,如果有遇到一樣問題的朋友,可以參考一下本文
    2014-06-06
  • 基于 Docker 開發(fā) NodeJS 應用

    基于 Docker 開發(fā) NodeJS 應用

    這是兩篇文章的第一篇。本文涵蓋了有關在使用 Express 框架開發(fā)一個Node應用時,用Docker 替代 Vagrant 的比較詳細的教程, 應用將使用 connect-redis 中間件將會話信息持久化到Redis中. 第二篇文章將介紹到將這個開發(fā)的設置產品化.
    2014-07-07
  • Electron 調用命令行(cmd)

    Electron 調用命令行(cmd)

    這篇文章主要介紹了Electron 調用命令行(cmd),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09

最新評論

琼海市| 曲靖市| 宝山区| 东莞市| 鸡西市| 佳木斯市| 资兴市| 内江市| 沙洋县| 白银市| 芦山县| 石门县| 仙居县| 景宁| 府谷县| 板桥市| 潮州市| 兴化市| 任丘市| 岢岚县| 广元市| 黑龙江省| 彰化市| 齐河县| 游戏| 汨罗市| 浑源县| 广丰县| 天水市| 辉县市| 永靖县| 齐齐哈尔市| 沛县| 金阳县| 铁岭市| 花垣县| 黄大仙区| 苍南县| 武穴市| 彭山县| 江达县|