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

92 javascript

var timeInMs = Date.now();
Run Code Online (Sandbox Code Playgroud)

每个MDN

var timeInMs = new Date(optional).getTime();
Run Code Online (Sandbox Code Playgroud)

每个MDN.

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

Date.now()更快 - 查看jsperf

Poi*_*nty 87

这些东西都是一样的(在语义上编辑 ;性能稍好一些.now()):

var t1 = Date.now();
var t2 = new Date().getTime();
Run Code Online (Sandbox Code Playgroud)

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

var now = new Date();
Run Code Online (Sandbox Code Playgroud)

然后等待一段时间,随后的调用now.getTime()将告诉变量设置点的时间.

  • @Taurus 现代 JavaScript 运行时*非常*擅长对象创建和垃圾收集。除非您正在开发某种实时游戏内核,否则完全没有理由担心。编写看起来不错且不脆弱的代码。 (3认同)

jra*_*jav 46

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

编辑:来源:http://jsperf.com/date-now-vs-new-date

  • 这是因为“Date(可选).getTime();”在获取当前时间之前必须分配空间来获取新的 Date 对象吗? (2认同)
  • @vegemite4me 提到的链接已损坏! (2认同)

Gre*_*hak 6

当您这样做时,(new Date()).getTime()您正在创建一个新的 Date 对象。如果重复执行此操作,它将比 Date.now() 慢大约 2 倍

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


Bre*_*mir 2

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