javascript 序列化 json-Google Chrome 工程师:不容错过的 8 个 JavaScript 优化技巧

2023-09-06 0 9,804 百度已收录

出品| CSDN(ID:CSDNnews)

以下为译文:

在过去的几年里,由于浏览器脚本解析和编译率的提高,Javascript 的成本结构发生了巨大的变化。 到2019年,处理Javascript的成本主要体现在脚本下载时间和CPU执行时间上。

如果浏览器主线程忽略执行Javascript脚本,则可能会影响用户交互体验。 因此javascript 序列化 json,优化脚本执行时间和清除网络困难将对用户体验产生积极影响。

高级实用手册

javascript 序列化 json-Google Chrome 工程师:不容错过的 8 个 JavaScript 优化技巧

这对网络开发人员意味着什么? 这意味着解析和编译不再像我们最初想象的那么慢。 因此javascript 序列化 json,开发者在优化Javascript包时应重点关注以下三个方面:

减少下载时间

减少执行时间

避免使用小型内联脚本(因为它们仍然需要在主线程上解析和编译)。

为什么下载和执行时间很重要?

javascript 序列化 json-Google Chrome 工程师:不容错过的 8 个 JavaScript 优化技巧

为什么优化下载和执行时间对我们很重要? 因为对于高端网络来说,下载时间的影响是非常大的。 尽管4G(甚至5G)在全球范围内迅速衰落,但大多数人的有效连接速度仍然远高于网络标称速度。 有时我们出门时,会感觉网速提升到只有3G速度(甚至更差)。

JavaScript 的执行时间对于 CPU 较慢的高端手机也非常重要。 由于CPU、GPU以及散热限制的差异,高端手机和高端手机的性能差异很大。 这对 JavaScript 性能有重大影响,因为它的执行受到 CPU 性能的阻碍。

事实上,在 Chrome 这样的浏览器上,JavaScript 执行时间可以达到总页面加载时间的 30%。 下图是一个典型工作负载网站(Reddit.com)在高端桌面PC上的页面负载分析:

V8引擎下的Javascript处理时间占整个页面加载时间的10-30%

对于中国联通设备,中端手机(如 Moto G4)执行 Reddit Javascript 脚本的时间比高端手机(如 Pixel 3)长 3-4 倍,而在中端手机(如 Pixel 3)上执行 Reddit 的 Javascript 脚本的时间是高端手机(如 Pixel 3)的 3-4 倍。高端手机上的时间更长(价格高于 100 美元的 Alcatel 1X) 执行 Reddit 的 Javascript 脚本需要的时间要长 6 倍以上:

javascript 序列化 json-Google Chrome 工程师:不容错过的 8 个 JavaScript 优化技巧

Reddit 的 Javascript 脚本在多种不同设备(低端、中端和高端)上的执行时间。

注:Reddit 对于桌面和联通网络的体验不同,因此 MacBook Pro 的执行结果无法与其他结果进行比较。

当您开始优化 JavaScript 执行时间时,您需要小心长时间运行的任务,这些任务可能会长时间独占 UI 线程。 即使页面看起来已加载,这些长任务也会阻碍关键任务的执行。 将长任务分解为更小的任务。 通过拆分代码并确定加载顺序,您可以实现更快的页面交互,并有望增加输入延迟。

独占主线程的长时间运行的任务应该被拆分。

V8引擎如何提高Javascript解析/编译速度?

从Chrome 60版本开始,使用V8引擎的原始JS的解析速度降低了2倍。 同时,Chrome还做了其他工作来并行化解析和编译工作,这使得这部分成本对用户体验的影响不那么明显和关键。

通过将解析和编译工作转移到工作线程,V8引擎平均减少了主线程上的解析和编译工作量40%。 例如,Facebook 增长了 46%,Pinterest 增长了 62%,进步最大的是 YouTube,下降了 81%。 这是对现有非主线程流解析/编译性能改进的进一步改进。

不同版本V8发动机分析时间对比

javascript 序列化 json-Google Chrome 工程师:不容错过的 8 个 JavaScript 优化技巧

我们还可以以图形方式比较不同 V8 引擎对不同 Chrome 版本中 CPU 处理时间的影响。 可以看出,Chrome 61解析Facebook的JS脚本所花费的时间可以被Chrome 75解析相同的Facebook JS脚本和6个Twitter JS脚本所花费的时间。

Chrome 61 解析 Facebook JS 脚本所需的时间可以被 Chrome 75 用来解析相同的 Facebook JS 脚本和 6 个 Twitter JS 脚本。

让我们仔细看看这种改进是如何实现的。 一般来说,脚本资源可以在工作线程上进行流解析和编译,这意味着:

V8引擎可以在不阻塞主线程的情况下解析和编译JavaScript。

当整个HTML解析器遇到

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 javascript javascript 序列化 json-Google Chrome 工程师:不容错过的 8 个 JavaScript 优化技巧 https://www.wkzy.net/game/195772.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务