Nodejs でタイムスタンプを取得するには、次のような方法がたくさんあります。
1.new Date().getTime()
2.Date.now()
3.process.uptime()
4 .process.hrtime()
通常、タイムスタンプを取得したい場合は、これらのメソッドを使用できます。では、これらのメソッドの違いは何でしょうか?
new Date().getTime() および Date.now()
これらのメソッドは、ノード実行環境のシステム時間のミリ秒を使用します。+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);
Output を使用してテストできます。結果:
【new Date().getTime()】interval: 1583【+new Date】interval: 2189【Date.now()】interval: 891タイムスタンプを取得したいだけの場合は、 Date.now() を使用するのが最良の方法ですが、時差を計算したい場合、これらの方法にはいくつかの問題があります。実行環境のシステム時刻にはわずかなコールバックが含まれる場合があるため、取得される時差は正確ではありません。 、そして時々それは特定のバグを引き起こすでしょう。 process.hrtime()このメソッドは、過去の任意の時点と現在からの時間に基づいて正確なタイムスタンプ オブジェクトを取得することです: [秒、ナノ秒]
> process.hrtime() [ 3197146, 563552237 ]
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);
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);