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

IT技术 javascript
2021-02-25 06:25:50
var timeInMs = Date.now();

每个MDN

对比

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

每个MDN

除了语法和在第二个版本中通过 optional 设置日期(不是当前)的能力之外,两者之间有什么区别吗?

Date.now() 更快 - 查看jsperf

5个回答

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

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

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

var now = new Date();

然后稍等片刻,随后的调用now.getTime()将告诉变量设置点的时间。

不应该说谢谢而是谢谢(我希望我没有做过一次以上)。
2021-04-17 06:25:50
@Taurus 现代 JavaScript 运行时非常擅长对象创建和垃圾收集。除非您正在开发某种实时游戏内核,否则完全没有理由担心。编写看起来不错且不脆弱的代码。
2021-04-28 06:25:50
您认为在程序开始时创建一个日期对象,然后在dateObj.setTime(Date.now())每次执行需要访问Date方法的异步操作(例如dateObj.getMinutes())时更新该日期对象 ( ) 或创建新日期对象会更高效吗?
2021-05-07 06:25:50

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

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

是的,我草率地补充说 - 我的意思是分配以及与创建对象相关的所有内容。
2021-04-22 06:25:50
这是因为Date(optional).getTime();在获取当前时间之前必须分配空间来获取新的 Date 对象吗?
2021-05-06 06:25:50
大概是。不过,我希望它更多地与 Date 构造函数所做的一切有关,而不是与对象的实际分配有关。
2021-05-12 06:25:50

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

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

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

有时最好在 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