写点什么

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

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

关注

评论

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

DockQuery x 达梦 国产数据库生态“加速跑”

BinTools图尔兹

#数据库 信创产业 达梦认证

秒懂算法 | 基于主成分分析法、随机森林算法和SVM算法的人脸识别问题

TiAmo

机器学习 算法 随机森林

高并发场景下,如何优化服务器的性能

华为云开发者联盟

高并发 开发 华为云 华为云开发者联盟 企业号 3 月 PK 榜

户外led显示屏在安装设计指南

Dylan

LED显示屏 户外LED显示屏 户内led显示屏

Node.js 未来发展趋势

京东科技开发者

Java 机器学习 前端 物联网 nodejs

Serverless 时代开启,云计算进入业务创新主战场

Serverless Devs

Serverless

面向增长,用友招聘云发布新一代人才配置解决方案!

用友BIP

人才 平台 招聘管理系统

零信任分段如何防止内网漫游?

权说安全

零信任

软件测试 | 精准化测试

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

测试

flutter系列之:在flutter中自定义themes

程序那些事

flutter 架构 大前端 Web 程序那些事

双机热备三个优势简单说明-行云管家

行云管家

负载均衡 高可用 服务器 双机热备

开源即时通讯IM框架 MobileIMSDK:快速入门

JackJiang

网络编程 即时通讯 IM

一万年太久,只争朝夕 | Foundation model的进展仍不够快

Baihai IDP

人工智能 AI 大模型 企业号 3 月 PK 榜 Foundation Models

某游戏公司基于OceanBase 4.0的运营分析AP实践

OceanBase 数据库

企业是否具备等保测评资质在哪里查?怎么查?

行云管家

等保 等级保护 等保测评

用友BIP事项会计 X 全面预算:多维数智预算助力企业敏捷算赢未来

用友BIP

智能会计

2022 IoTDB Summit:京东刘刚《Apache IoTDB 在京东万物互联场景中的应用》

Apache IoTDB

大数据 时序数据库 IoTDB

详解Docker容器运行GUI程序的方法

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 3 月 PK 榜

基于 eBPF 的 Serverless 多语言应用监控能力建设

Serverless Devs

Serverless

你也能成为“黑客”高手——趣谈Linux Shell编程语言

京东科技开发者

Linux 系统架构 操作系统 开发 企业号 3 月 PK 榜

从传统数据库痛点看分布式数据库选型问题

OceanBase 数据库

从青铜到王者,揭秘 Serverless 自动化函数最佳配置

Serverless Devs

Serverless 云原生

2022 IoTDB Summit:中航王闯《Apache IoTDB 在中航机载智能云制造系统的应用解决方案》

Apache IoTDB

数据库 大数据 IoTDB

sequence:从认识到会使用,今儿给你讲的透透的

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

FTP上传文件速度太慢怎么办?

镭速

走进RocketMQ(四)高性能网络通信

白裤

Java RocketMQ io RocketMQ网络通信

详解基于 Celestia、Eclipse 构建的首个Layer3 链 Nautilus Chain

股市老人

2023最新后端中大厂面经&在面试过程中如何反问?

王中阳Go

高效工作 学习方法 面试 面试题 大厂面经

超越ChatGPT:大模型的智能极限

OneFlow

人工智能 深度学习 ChatGPT

云原生应用配置管理的5个最佳实践

HummerCloud

云原生

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