date.now()vs(new Date).getTime()

问题描述 投票:0回答:7
var timeInMs = Date.now();
per

Mdn

vs.

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

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

Date.now()

更快 - 查看

jsperf


    
	
这些事物是相同的(语义上的

dedit;在
javascript timestamp
7个回答
149
投票
中表现更好一些):

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

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

Date
然后等待一段时间,随后的呼叫

var now = new Date();

将在设置变量的时间内告诉时间。
    

它们有效地等效,但是您应该使用
now.getTime()
。它更明显,大约是两倍的速度。

Edit:来源:

Https://jsperf.app/nimime/15


85
投票

当您这样做时,您正在创建一个新的日期对象。如果您反复这样做,它将比日期慢约2倍。

相同的原则应适用于
Date.now()

有时,最好以日期对象格式将一些时间跟踪变量,而不仅仅是多毫秒,而是可以访问日期的方法而无需重新实现。在这种情况下,date.now()仍然赢得了新的日期()之类的胜利,尽管我的chrome只有大约20%,而在IE上只有一小部分。

看到我的jsperf on

6
投票
(new Date()).getTime()

vs.

Array.prototype.slice.call(arguments, 0)

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

    


3
投票

DATE.NOW()

调用静态方法,这足以受到首选的态度,可以完善测试:
[].slice.call(arguments, 0)

测试执行:
timeStamp2.setTime(Date.now()); // set to current;

date.now()更快50%


2
投票
timeStamp1 = new Date(); // set to current;

正在调用类的静态方法

# cat test.ts const limit = 10000000 //ten milion let startTime = Date.now() let val = 0 for (let i=0; i<=limit; i++) { const val1 = Date.now() } let diff = Date.now() - startTime console.log('Time Date.now(): ' + diff + ' ms') startTime = Date.now() val=0 for (let i=0; i<=limit; i++) { const val1 = new Date().getTime() } diff = Date.now() - startTime console.log('Time with new Date().getTime: ' + diff + ' ms' )

1
投票
# node test.ts Time Date.now(): 818 ms Time with new Date().getTime: 1625 ms

可以分为两个步骤:

Date.now()
:调用

now()

类的
Date
方法以初始化一个类的实例。 我们刚刚初始化的实例的方法。


-2
投票
分类为static方法

new Date().getTime()

的静态方法。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.