「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战」。
(为了奖品,努力水文)
在之前的工作中,我最常用的方法大概是new Date().getTime(),后来在准备面试的过程中,有看到另一个方法Date.now()试了下,也能得到正确的结果。
那么他们两个有没有一些执行效率的差别呢?粗略的测试一下
console.time('date gettime')
for(let i = 0; i < 60000; i++) {
let a = new Date().getTime();
}
console.timeEnd('date gettime')
console.time('date')
for(let i = 0; i < 60000; i++) {
let a = Date.now();
}
console.timeEnd('date')
执行结果
[Running]
date gettime: 8.113ms
date: 4.15ms
[Running]
date gettime: 44.855ms
date: 4.85ms
当然我们上面的测试是针对循环,测试时下意识会想着多次计算去计算时间差,毕竟可能单次不足以看出差别。但是我也测试了单次
console.time('date gettime')
new Date().getTime();
console.timeEnd('date gettime')
console.time('date')
Date.now();
console.timeEnd('date')
测试结果如下
[Running]
date gettime: 0.42ms
date: 0.008ms
那为什么会有这样的差距呢?去mdn搜索了下Date对象。会发现getTime是原型上的方法Date.prototype.getTime(),而now是Date对象本身的方法Date.now()
这些差别可能会现在的计算机来说不算什么,不过我个人可能还是倾向于使用执行效率更好的。比如+和Number()