performance.now和Date.now

本文比较了浏览器提供的performance.now()与JavaScript内置的Date.now()方法在获取当前时间、精度、兼容性和应用场景上的差异,强调了performance.now()的高精度但兼容性受限,而Date.now()更通用但时间戳可能受系统时间影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相同点

首先都能够返回当前时间

不同点

1. performance.now:是浏览器(Web API)提供的方法,不同浏览器获取到的精度不同。                1. Date.now:是Javascript内置方法,差异主要在于浏览器遵循的ECMAScript规范。

2.performance.now()精确点高,不依靠系统时间,但是兼容性有问题。适用于高进度需求的场景,比如作为一个基准点或则游戏、音频、视频等所需精度很高的地方。

2.Date.now()会受系统时间影响,且以Unix(ˈjuːnɪks)时间为基准,不易看懂,无兼容性问题。会因为系统时间的变化而改变,准确性有时不能保证,通用性比较高。

3.Date.now()返回的时间戳没有被限制在一毫秒的精确度内,小于 1ms 的测试不出来结果。

3.performance.now():返回的时间戳以双精度浮点数 double 的形式表示时间,精度最高可达微秒级。

Date.now() 约等于 performance.timing.navigationStart + performance.now()

例子

let start = Date.now();
// 调用一个耗时间的循环
for (let i = 0; i < 100000; i++) {
  let doSomething = i * i;
}
let end = Date.now()

// 从格兰威特时间到至今(循环开始前)的时间戳
console.log('开始时间:', start);	// 1666781986873
console.log('结束时间:', end);		// 1666781986873
// 以毫秒计的运行时长
console.log('运行时长:',end - start)	// 0 毫秒
let start = performance.now();
// 调用一个耗时间的循环
for (let i = 0; i < 100000; i++) {
  let doSomething = i * i;
}
let end = performance.now()

// 返回的时间戳,是自创建上下文以来经过的时间,跟打开网页的时间有关,但是这不是绝对的。
// 如果返回的值是178764.00000002384185791 这类的,这种的会被处理为 178764
console.log('开始时间:', start);	// 178764
console.log('结束时间:', end);		// 178764.10000002384
// 以毫秒计的运行时长
console.log('运行时长:',end - start)	// 0.10000002384185791 毫秒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值