当前位置:
首页 > 网站开发 > JavaScript >
-
performance.now() 与 Date.now() 对比
概念
performance.now():返回值表示为从time origin之后到当前调用时经过的时间,
time origin: 时间源,
时间源是一个可以被认定为当前文档生命周期的开始节点的标准时间,计算方法如下:
-
如果脚本的 global object 是
Window
, 则时间源的确定方式如下:-
如果当前
Document
是中加载的第一个Window
, 则时间源是创建浏览器上下文的时间。 - 如果处于卸载窗口中已加载的先前文档的过程中, 一个确认对话框会显示出来,让用户确认是否离开前一页,则时间源是用户确认导航到新页面的这个时间,这一点是被认同的。
-
如果以上方式都不能确定时间源, 那么时间源是创建窗口中当前
Document
的导航发生的时机。
-
如果当前
-
如果脚本中的全局对象是
WorkerGlobalScope
(意味着,该脚本以 web worker 的形式运行), 则时间源是这个 worker 被创建的时刻。 - 在所有其他情况下,时间源的值是 undefined。
Date.now():
Date.now()
方法返回自 1970 年 1 月 1 日 00:00:00 (UTC) 到当前时间的毫秒数。对比
-
performance.now() 和 JavaScript 中其他可用的时间类函数(比如
Date.now
)不同的是,window.performance.now()
返回的时间戳没有被限制在一毫秒的精确度内,相反,它们以浮点数的形式表示时间,精度最高可达微秒级。 -
另外一个不同点是,
window.performance.now()
是以一个恒定的速率慢慢增加的,它不会受到系统时间的影响(系统时钟可能会被手动调整或被 NTP 等软件篡改)。另外,performance.timing.navigationStart + performance.now()
约等于Date.now()
。 - performance.now是浏览器(Web API)提供的方法,不同浏览器获取到的精度不同。Date.now是Javascript内置方法,差异主要在于浏览器遵循的ECMAScript规范
- Date.now() ≈ performance.timing.navigationStart + performance.now()
适用场景
耗时计算
performance.now() 方法
performance.now()-performance.now()
// 分别为两个时刻的 performance.now()
优点:
-
精确度高,低于 1ms(实际情况视浏览器的不同,精度大约在
0.1ms ~ 0.005ms
之间); - 记录的时间可以被变量所保存,因此可以用于生产环境使用;
缺点:
-
返回的值,跟打开网页的时间有关(至少chrome如此),并不像
Date.now()
那样直接返回现在距离 1970 年那个起始时间的毫秒数。
console.time方法
console.time("耗时") for(let i=0;i<1000;i++){ console.log(i) } console.timeEnd("耗时") // 耗时: 38.914794921875 ms
优点:
-
精度比较高(单位小于毫秒),连续两行
console.time('耗时')
和 ··console.timeEnd('耗时')··,他也能计算出时间差异;
缺点:
- 首先只能在控制台显示结果,他本身是没有返回值的;
- 不能提交到服务器日志;
Date.now() 方法
前后两个时间相减即可。
优点:
- 可以获取当前的时间,并且被变量保存;
缺点:
- 精度太低,小于 1ms 的测试不出来结果;
出处:https://www.cnblogs.com/beileixinqing/p/16785469.html
栏目列表
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
数据库审计与智能监控:从日志分析到异
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比