写点什么

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

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

关注

评论

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

百度智能云计算系列产品通过电子标准院算力服务成熟度增强级评估

Baidu AICLOUD

四旋翼无人机到底是如何平稳飞行的?巧用空气动力学仿真

Altair RapidMiner

人工智能 无人机 仿真 altair 设计仿真

第64期 | GPTSecurity周报

云起无垠

如何解决跨国视频会议卡顿问题

Ogcloud

网络加速 海外网络加速 网络加速服务 视频会议加速

如何通过观测云实现AIOps突破?

观测云

AIOPS 智能运维

云上集成时序数据库 IoTDB,海量储能数据实现高效处理与实时分析

Apache IoTDB

为什么要使用TikTok云手机

Ogcloud

云手机 海外云手机 tiktok云手机 云手机海外版 tiktok运营

讯飞星火极速超拟人交互技术:语音端到端,8 月底开放;昆仑万维发布 AI 短剧平台 SkyReels丨RTE 开发者日报

声网

Match:重塑社交金融格局,打造财富增长新引擎

BlockChain先知

MySQL主从同步如何保证数据一致性?

王磊

Java

豆瓣评分8.7!Python pandas创始人亲码的数据分析入门手册!

我再BUG界嘎嘎乱杀

Python 编程 数据分析 后端 pandas

RFG引领Meme新趋势——为何现在仍是投资好时机?

股市老人

iPaaS丨API低代码平台适用的业务场景

RestCloud

API 低代码平台 ipaas

机器人测试自动化智能化交流沙龙 —— 免费参与,线上线下同步进行,探索未来科技新篇章!

霍格沃兹测试开发学社

报告称2024年上半年DDoS攻击数量激增,同比增长46%

网络安全服务

游戏 金融 电商 DDoS DDoS 攻击

机器人测试自动化智能化交流沙龙 —— 免费参与,线上线下同步进行,探索未来科技新篇章!

测吧(北京)科技有限公司

测试

AI作文导师、一键搜索答疑、1秒生成手抄报,百度搜索推出开学季AI大礼包

极客天地

利用多Lora节省大模型部署成本|得物技术

得物技术

LoRa 大模型 企业号2024年8月PK榜

通过 API 集成优化货币兑换

幂简集成

API 货币兑换API

【AI 冰封挑战】搭档函数计算,“冰”封你的夏日记忆

阿里巴巴云原生

阿里云 Serverless 云原生

编程“奥斯卡”落幕,百度之星决赛中学生疯狂收割大奖!

herosunly

深入浅出python的lambda表达式

我再BUG界嘎嘎乱杀

Python 编程 后端 开发语言 Lambda表达式

在孩子成长路上,爱与智慧的陪伴是送给孩子最好的礼物

心大陆多智能体

AI大模型 心理健康 数字心理

使用对比!SLS 数据加工 SPL 与旧版 DSL 场景对照

阿里巴巴云原生

阿里云 云原生 sls

如何在 KubeBlocks 中配置实例模板?

小猿姐

数据库 Kubernetes 云原生

解锁RFG空投:撸毛党看过来,轻松获利的机会来了!

石头财经

Bonree ONE 3.0:全域可观测 运维新境界

博睿数据

华为云构建边缘云平台,畅享AI数字时代新体验

最新动态

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