次のように、nodejsでタイムスタンプを取得するには多くの方法があります。
1。new Date()。getTime()
2。date.now ()
3。process.uptime ()
4。process.hrtime ()
タイムスタンプを取得したい場合は、これらの方法を使用できます。では、これらの方法の違いは何ですか?
new date()。gettime()and 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()。 interval =(t2 -t1);} interval =(t2 -t1); console.log( 'new date()。gettime()】間隔:'、interval); t1 = 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);出力結果:
【new date()。getTime()】間隔:1583
【+新しい日付】間隔:2189
【date.now()】間隔:891
タイムスタンプを取得するだけの場合、 date.now()を使用することが最良の方法ですが、時差を計算したい場合、これらの方法にはいくつかの問題があります。ランニング環境のシステム時間にわずかなコールバックがあるため、得られる時間差は不正確で、時にはいくつかのバグが引き起こされます。
process.hrtime()
この方法は、過去の時点と現在からの時間に基づいて正確なタイムスタンプオブジェクトを取得することです。[秒、nanoconds]
> 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()。 date()。gettime(); interval = parseint(hrtime2 [0] * 1e3 + hrtime2 [1] * 1e -6); console.log( '【hrtime】間隔:'、interval、t2 -t1);
【hrTime】interval: 6412 6413正しく覚えていれば、同じ数の作成、日付、now()上記は約900msです!
process.hrtime()が遅すぎます! ! !
NodeJSが高精度時間を処理する場合、計算は比較的複雑であり、多くのシステムリソースを占有し、速度が遅いため、この方法は高周波アプリケーションに適していないことがわかります。以下のprocess.uptime()を参照してください
process.uptime()
この関数は、NodeJSスタートアップの実行時間を使用して2番目のタイムスタンプを取得します。これは、ミリ秒に正確です。
Process.Uptime
入力:6.419
この機能はノードの起動時間に基づいており、システムクロックドリフトの影響を受けず、時差の計算に適しています。
では、複数の通話のパフォーマンスはどうですか?
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);出力:[process.uptime()]間隔:954
process.hrtime()と比較して、多くのパフォーマンスを作成します〜
それほど正確にカウントしないでください、それは速いです!
次に、高頻度で時差を計算する必要があります!
上記は、nodejsがタイムスタンプと時間の違いを得ることについてのすべてです。 nodejsを使用するとき、誰にとっても役立つことを願っています。