相同点
首先都能够返回当前时间
不同点
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 毫秒