134
var timeInMs = Date.now();

MDNごと

対。

var timeInMs = new Date(optional).getTime();

MDNごと。

2番目のバージョンのオプションを介して構文と日付を(現在ではなく)設定する機能以外に、2つの間に違いはありますか?

Date.now()の方が高速です-jsperfをチェックしてください

4

5 に答える 5

122

これらは同じです(セマンティックに編集します。パフォーマンスは)で少し良くなり.now()ます:

var t1 = Date.now();
var t2 = new Date().getTime();

ただし、すでに作成されているDateインスタンスの時間値は、その構築時(または設定されている任意の日時)に凍結されます。つまり、これを行う場合:

var now = new Date();

その後、しばらく待つとnow.getTime()、変数が設定された時点の時刻がに通知されます。

于 2012-09-20T17:04:32.107 に答える
64

これらは実質的に同等ですが、を使用する必要がありますDate.now()。それはより明確で、約2倍の速さです。

編集:出典: http: //jsperf.com/date-now-vs-new-date

于 2012-09-20T17:05:43.200 に答える
5

そうすると(new Date()).getTime()、新しい Date オブジェクトが作成されます。これを繰り返し行うと、Date.now() よりも約 2 倍遅くなります。

同じ原則がArray.prototype.slice.call(arguments, 0)vsにも適用されるべきです[].slice.call(arguments, 0)

于 2013-09-27T17:46:18.060 に答える
3

はい、それは正しいです。現在の時刻を使用する場合、これらは実質的に同等です。

于 2012-09-20T17:03:43.550 に答える
2

再インスタンス化せずに Date のメソッドにアクセスできるように、時間追跡変数を単なるミリ秒数としてではなく、Date オブジェクト形式で保持することが望ましい場合があります。その場合、Date.now() は new Date() などよりも優れていますが、Chrome では約 20%、IE ではわずかです。

私のJSPERFを見てください

timeStamp2.setTime(Date.now()); // set to current;

対。

timeStamp1 = new Date(); // set to current;

http://jsperf.com/new-date-vs-settime

于 2013-12-28T22:02:18.647 に答える