概述
performance.now()是浏览器性能API的一部分,提供一个高精度、低误差的时间测量方式,用以支持算法分析和系统级优化。
一、performance.now单位
1、单位介绍
performance.now()返回当前时刻到navigationStart事件被触发的时间差,依赖于操作系统高精度计时器提供的时间信息,单位为毫秒(ms)。
2、示例代码
function testPerformance() { let t1 = performance.now(); // do some work here let t2 = performance.now(); console.log(`Time elapsed: ${t2 - t1} ms`); } testPerformance();
二、performance.now和date.now
1、性能比较差异
date.now()是JavaScript中的一个内置函数,返回当前的时间戳,不依赖操作系统计时器,但其精度较低,可能受到系统时间调整或线程调度等原因的影响。而performance.now()则依赖于操作系统计时器返回的测量结果,精度更高,但在运行过程中受到操作系统影响较大。
2、示例代码
let t1 = Date.now(); // do some work here let t2 = Date.now(); console.log(`Time elapsed: ${t2 - t1} ms`); let t3 = performance.now(); // do some work here let t4 = performance.now(); console.log(`Time elapsed: ${t4 - t3} ms`);
三、performance.now js
1、API说明
performance.now()函数在JavaScript中作为浏览器提供的单一参数,可以与其他性能API结合使用,例如performance.mark()和performance.measure(),可以对性能分析过程进行更加细致的测量和记录。
2、示例代码
performance.mark('startWork'); // do some work here performance.mark('endWork'); performance.measure('workTime', 'startWork', 'endWork'); console.log(performance.getEntriesByName('workTime')[0].duration);
四、performance.now在Firefox
1、Firefox中的差异
在Firefox中,performance.now()返回的结果是一个浮点数,代表自系统时间启动以来所经过的时间。返回值精确度可以达到微秒级别,比其他现代浏览器更高。
2、示例代码
let t1 = performance.now(); // do some work here let t2 = performance.now(); console.log('Time elapsed:', (t2 - t1) + 'ms');
五、performance.now和new date
1、new Date()的差异
new Date()是JavaScript中另外一个内置函数,能够精确获取当地时间,返回值会受到时区等诸多因素的影响,具有很强的可读性。
而performance.now()则不关心时区等因素,更适合于浏览器性能优化。
2、示例代码
let t1 = new Date(); // do some work here let t2 = new Date(); console.log('Time elapsed:', (t2 - t1) + 'ms'); let t3 = performance.now(); // do some work here let t4 = performance.now(); console.log('Time elapsed:', (t4 - t3) + 'ms');
六、performance.now() 用户识别选取
1、用户识别漏洞
performance.now()函数的返回值可以用于用户行为识别,在较早版本浏览器中存在漏洞,被不法分子利用进行用户行为跟踪等商业行为,因此在实际应用中需要注意这个问题,并严格控制网站使用performance.now()功能的特权信息,避免用户数据泄露。
2、代码示例
function getUserData() { let t1 = performance.now(); // collect user data here let t2 = performance.now(); // send data to server sendData(t2 - t1); }
七、结语
通过本文的介绍,我们了解了performance.now()函数的原理和使用,包括其单位、与date.now()的比较、在JavaScript中的使用、在Firefox中的差异、与new Date()的性能差异、以及用户信息识别问题等。在实际开发中,我们可以利用performance.now()函数对系统进行着重优化,提高Web应用程序的性能。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/150496.html