2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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:007825
用户头像

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

关注

评论

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

基于大数据、大模型的应用总结与技术心得

joe

爆红的PLM!

用友BIP

PLM

避坑指南之财务共享服务中心的质量管理

用友BIP

财务共享

重庆中烟:事项会计驱动业财深度融合

用友BIP

业财融合

语音数据集:开启智能语音技术的新篇章

数据堂

AI大模型时代下运维开发探索第二篇:基于大模型(LLM)的数据仓库

阿里云大数据AI技术

IM通讯协议专题学习(十):初识 Thrift 序列化协议

JackJiang

网络编程 即时通讯 IM

赴一场AI星河之约:他们改变了什么?

脑极体

AI

来聊聊程序员的职业发展路线

伤感汤姆布利柏

“边缘计算:从概念到实践的探索与思考“

future

GLTF编辑器-位移贴图实现破碎的路面

3D建模设计

WebGL 3D渲染 three.js 材质纹理贴图 3D材质编辑

江铃晶马 X 袋鼠云:搭建企业级数据资产中心,推进打造“智数晶马”

袋鼠云数栈

大数据 数据中台 数字化转型 案例 大数据平台

taobao.trade.memo.update( 修改交易备注 )丨淘宝店铺订单接口

tbapi

淘宝店铺订单接口 天猫店铺订单接口 淘宝店铺订单交易接口 淘宝店铺订单备注接口 天猫订单备注接口

百度CTO王海峰:文心一言用户规模破1亿

飞桨PaddlePaddle

人工智能 深度学习 WAVE SUMMIT

有了向量数据库,我们还需要 SQL 数据库吗?

Zilliz

sql 向量数据库 zillizcloud rag

语音数据集:智能语音技术的燃料与推动力

数据堂

GLTF 编辑器实现逼真3D动物毛发效果

3D建模设计

WebGL 3D渲染 three.js 材质纹理贴图 3D材质编辑

强大的磁盘分析:Disk Xray最新激活版

胖墩儿不胖y

Mac软件 磁盘分析软件 磁盘工具

KaiwuDB 受邀亮相“ACDU 中国行”数据库技术沙龙(西安站)

KaiwuDB

KaiwuDB ACDB 中国行

观测云产品更新 | 智能监控、应用性能监测、场景图表等优化

观测云

APM 智能监控

坚果的2023年终总结-激流勇进的一年

坚果

年终总结 坚果派

3D 渲染如何帮助电商促进销售?

3D建模设计

WebGL 3D渲染 three.js 材质纹理贴图 3D材质编辑

LLM评估:通过7大指标监测并评估大语言模型的表现

Baihai IDP

程序员 AI ChatGPT LLM 白海科技

Linux操作系统中软件安装:用RPM包管理器安装软件步骤

小魏写代码

云原生与持续交付:加速软件交付与部署的革命

范艺笙冉

写实风格3D模型材质贴图

3D建模设计

WebGL 3D渲染 three.js 材质纹理贴图 3D材质编辑

GLTF编辑器实现逼真的石门模型

3D建模设计

WebGL 3D渲染 three.js 材质纹理贴图 3D材质编辑

家页观察丨万华生态绿色化、工业化、数字化助力城市更新

极客天地

西部市场的无限潜力与成都的崛起“2024成都电子信息展会”

AIOTE智博会

电子展 电子信息展 成都电子展

语音数据集:推动人工智能语音技术的关键要素

数据堂

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