写点什么

Web Worker 通信性能研究:通过多线程改进 Web 应用性能

  • 2019-08-19
  • 本文字数:1182 字

    阅读完需:约 4 分钟

Web Worker通信性能研究:通过多线程改进Web应用性能

Surma 是谷歌的 Web 布道师,最近发布了一项有关 postMessage 的性能研究结果。postMessage 是 Web Worker 的通信方式。Surma 的结论是,虽然 postMessage 会带来一些开销,但如果有效载荷低于给定的开销预算,那么将非 UI 任务移出主线线可能会提高总体性能。


超过一半的互联网接入来自手机或平板电脑,而低端多核移动设备的市场份额一直在增加,Web 应用程序开发人员必须确保应用程序在低配置的环境中(如慢 CPU、GPU 或小内存)也能具有高性能。


在这种情况下,使用多线程的 Web Worker 可以将与计算相关的负载从主执行线程中隔离出来。最终的性能是在原生多核心架构上并行化任务(如果可用)所带来的好处加上与线程间通信开销相关的成本的总和。对于 Web 应用程序来说,主要的通信开销是使用 postMessage 方法在主 UI 线程和 Web Worker 之间进行通信。


由于一些开发人员不愿使用 Web Worker, Surma 对 postMessage 的性能做了一些说明。Surma 解释了他的研究背后的缘由:


人们不会考虑使用 Web Worker,是因为他们担心 postMessage()的性能,所以这是值得研究的一件事情。


该研究包括两个基准。第一个基准测试分析了在线程之间发送消息所需的时间,并显示了它与所发送的对象的复杂性之间的正相关关系。


第一个基准测试分别在 2018 款 MacBook Pro 上的 Firefox、Safari 和 Chrome 上运行,在 Pixel 3XL 的 Chrome 上运行,在诺基亚 2 的 Chrome 上运行。对象复杂度是指表示对象的 JSON 树的深度(树的层次)和宽度(属性的数量)的组合。


第二个基准测试证实了与 JSON.stringify()返回的字符串长度的强正相关关系,不过带有一些警告。Surma 解释说:


我认为这种相关性足够强,我们可以从中得出一个法则:对象的字符串化 JSON 表示与它的传输时间大致成正比。但更重要的是,这种相关性只适用于大对象,我说的大对象是指超过 100KB 的对象。虽然这种相关性在数学上是成立的,但这种差异对于较小的有效载荷来说更为明显。


Surma 根据响应动画空闲加载(RAIL)指南给出了“慢”的定义,并对涉及 JS 驱动动画的上下文(显示下一帧的预算为 16ms)和不涉及上下文(响应用户交互的预算为 100ms)的情况进行了区分。


Surma 总结道:


即使在最慢的设备上,你也可以使用 postMessage()发送 100KB 的对象,并保持在 100ms 的响应预算之内。如果有 JS 驱动的动画,有效载荷达到 10KB 是没有问题的。对于大多数应用程序来说,这应该足够了。使用 postMessage()确实有一定的代价,但不至于会导致脱离主线程架构变得不可用。


对于 postMessage 成本超过在多个线程上运行任务的好处的情况,Surma 提供了替代方案,比如通过使用分块技术或 WebAssembly 来提升性能。


完整的研究结果可以在 Surma 的博客上找到,其中包含了数据、可视化演示和图表。


原文链接


Improving Webapp Performance With Multi-Threading: A Study of Web Workers’ Communication Overhead


2019-08-19 08:007567
用户头像

发布了 731 篇内容, 共 454.6 次阅读, 收获喜欢 2003 次。

关注

评论

发布
暂无评论
发现更多内容

Kurator v0.5.0发布,打造统一的多集群备份与存储体验

华为云开发者联盟

云原生 开发工具 华为云 华为云开发者联盟

罗拉ROLA-IP代理IP:稳定性、纯净性、响应速度的保证

Geek_ccdd7f

跨境电商

头脑风暴利器!10款超实用的思维导图软件,助你脑洞大开!

彭宏豪95

思维导图 头脑风暴 在线白板 办公软件 思维导图软件

Mate Translate for Mac(翻译软件) v8.1.3中文激活版

mac

苹果mac Windows软件 Mate Translate 多语言翻译软件

碳管理丨三思全景显示方案助力雄安打造数字化能源管理平台

电子信息发烧客

云端大模型有哪些创新使用场景?一个原型方案

魏临

十月份 NFT 市场显示复苏迹象,等待进一步的积极发展

Footprint Analytics

区块链游戏 NFT

基于亚马逊云服务器+Grafana Loki日志采集方案部署

王坤祥

Grafana Loki 亚马逊云 亚马逊云科技 AWS EC2

实例讲解数据库的数据去重

不在线第一只蜗牛

数据库 架构 系统架构 系统

抓住Base主网空投机会:Bitget钱包详细教程

大瞿科技

人工智能:何谓技术

不在线第一只蜗牛

人工智能 AI 人工智能技术

如何 Get 字节跳动同款云原生大数据平台

字节跳动云原生计算

大数据 云原生

OpenGL 坐标系统详解

快乐非自愿限量之名

系统 opengl 坐标

植根中国 服务中国 英特尔拥抱AI 加速AI PC落地

E科讯

第三方数据测评对比五大品牌HTTP代理!哪家代理最纯净稳定

Geek_ccdd7f

跨境电商

Android发热监控实践

得物技术

性能优化 发热功耗 App体验 端侧监控

【云栖2023】林伟:大数据AI一体化的解读

阿里云大数据AI技术

大数据 AI

NFT质押挖矿游戏系统开发

薇電13242772558

NFT

YashanDB发布会圆满收官,V23.1三大新品引领国产数据库技术与应用突破!

墨天轮

数据库 实时数仓 国产数据库 空间数据库 yashandb

软件测试/测试开发丨接口自动化学习笔记——响应体断言

测试人

软件测试 接口测试

大咖专场 | KaiwuDB 多模数据库 - 时序性能优化方案

KaiwuDB

KaiwuDB 大咖专场 数据库性能优化

Databend Cloud 如何助力 AIGC 初创公司成本下降百倍

Databend

iOS加固原理与常见措施:保护移动应用程序安全的利器

雪奈椰子

一个java文件的JVM之旅

快乐非自愿限量之名

Java JVM 系统架构

第三方数据测评对比五大品牌HTTP代理!哪家代理最纯净稳定

Geek_ccdd7f

如何使用 GTX750 或 1050 显卡安装 CUDA11+

北桥苏

PyTorch cuda cudnn

风口过后,该重新关注软件内在质量了

neverwinter

程序员 互联网 软件工程 软件质量 软件研发

2023年度API安全状况详解

EquatorCoco

安全 信息安全 API 接口

亚马逊云 Lightsail:初创公司的福音

天黑黑

云服务器 亚马逊云 VPS

罗拉ROLA-IP代理IP:稳定性、纯净性、响应速度的保证

Geek_ccdd7f

Web Worker通信性能研究:通过多线程改进Web应用性能_移动_Bruno Couriol_InfoQ精选文章