性能 - Date.now()vs Date.getTime()

时间:2012-09-20 17:00:21

标签: javascript

var timeInMs = Date.now();

MDN

VS

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

per MDN

除了语法和在第二个版本中通过可选项设置日期(不是当前)的能力之外,两者之间是否有任何区别?

Date.now()更快 - 请查看jsperf

6 个答案:

答案 0 :(得分:82)

这些是相同的(编辑语义;使用.now()表现更好一点):

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

但是,任何已创建的Date实例的时间值在构造时(或在其设置的任何时间/日期)被冻结。也就是说,如果你这样做:

var now = new Date();

然后等一会儿,随后对now.getTime()的调用将告知变量设置点的时间。

答案 1 :(得分:43)

它们实际上是等效的,但您应该使用Date.now()。它更清晰,速度提高了一倍。

修改:来源:http://jsperf.com/date-now-vs-new-date

答案 2 :(得分:4)

执行(new Date()).getTime()时,您正在创建一个新的Date对象。如果重复这样做,它将比Date.now()

慢大约2倍

同样的原则应适用于Array.prototype.slice.call(arguments, 0) vs [].slice.call(arguments, 0)

答案 3 :(得分:2)

是的,这是正确的;当使用当前时间时,它们实际上是等效的。

答案 4 :(得分:2)

有时候最好将一些时间跟踪变量保存为Date对象格式而不是几毫秒,以便在不重新实例化的情况下访问Date的方法。在这种情况下,Date.now()仍然会赢得新的Date()等,但在我的Chrome上只有大约20%,在IE上只有一小部分。

请参阅我的JSPERF

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

VS

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

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

答案 5 :(得分:-2)

一个有趣的发现(Chrome / Firefox)。

Date.now() === new Date().getTime(); // true (usually)

Date.now() === new Date().getTime(); // false (sometimes!)