ホームページ > ウェブフロントエンド > jsチュートリアル > Nodejsでタイムスタンプと時差を取得する方法

Nodejsでタイムスタンプと時差を取得する方法

高洛峰
リリース: 2017-02-04 11:02:52
オリジナル
1291 人が閲覧しました

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(&#39;【new Date().getTime()】interval: &#39;, interval);
 
t1 = new Date().getTime();
for(i = 0; i < count; i++)
{
  t2 = +new Date;
  interval = (t2 - t1);
}
interval = (t2 - t1);
console.log(&#39;【+new Date】interval: &#39;, interval);
 
t1 = new Date().getTime();
for(i = 0; i < count; i++)
{
  t2 = Date.now();
  interval = (t2 - t1);
}
interval = (t2 - t1);
console.log(&#39;【Date.now()】interval: &#39;, 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(&#39;【hrTime】interval: &#39;, interval, t2 - t1);
ログイン後にコピー

【hrTime】interval: 6412 6413 私の記憶が正しければ、上記の Date.now() は、同じ作成数でも約 900ms かかります。

process.hrtime() が遅すぎます! ! !

nodejs が高精度の時刻を扱うと、計算がより複雑になり、多くのシステムリソースを消費し、速度が遅いため、この方法は高頻度のアプリケーションには適していないことがわかりました。以下を参照してください。 process.uptime()

process.uptime()

この関数は、nodejs の起動実行時間を使用して、ミリ秒単位の精度でタイムスタンプを秒単位で取得します:

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(&#39;【process.uptime()】interval: &#39;, interval);
ログイン後にコピー

出力: [process.uptime()]interval: 954

process.hrtime()と比較すると、パフォーマンスがはるかに優れています~

それほど正確である必要はなく、高速です!

高頻度で時差を計算する必要があるのはあなたです!

以上がタイムスタンプと時差を取得するためのnodejsの全内容です。nodejsを使用する際の参考になれば幸いです。

nodejs でタイムスタンプと時差を取得する方法に関するその他の記事については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート