给 JavaScript 插上多线程的翅膀 —— Web Worker 的 Promise 化实践 (www.alloyteam.com)

【简介】

众所周知,JavaScript 这门语言的一大特点就是单线程,即同一时间只能同步处理一件事情,这也是这门语言衍生出的 nodeJS 被各后端大佬诟病的很重要的一点。


然而,JavaScript 在设计之初,其实是故意被设计成单线程语言的,这是由于它当时的主要用途决定的。

JavaScript 最初的设计初衷是完成页面与用户的交互,操作 DOM 或者 BOM 元素,此时如果一味地追求效率使用多线程的话,会带来资源抢占,数据同步等等问题,因此必须规定,同一时间只有一个线程能直接操作页面元素,以保证系统的稳定性以及安全性。

尽管如此,但是 JavaScript 并不是只能线性处理任务。JS 拥有消息队列和事件循环机制,通过异步处理消息的能力来实现并发。在高 I/O 型并发事务处理的过程中,由于不需要手动生成与销毁线程以及占用额外管理线程的空间,性能表现及为优异。因此,nodeJS 作为 JavaScript 在服务端的探索者,在处理高并发网络请求的优势极为明显。

尽管 JavaScript 通过异步机制完美解决了高 I/O 性能的问题,但 JavaScript 单线程执行的本质还是没有变的。因此缺点就显而易见了,那就是处理 CPU 密集型的事务时没有办法充分调动现代多核心多线程机器的运算资源。

在现代大型前端项目中,随着代码的复杂程度越来越高,本地的计算型事务也在变得繁重,而运行在单线程下 JS 项目必定会忙于处理计算而无暇顾及用户接下来的频繁操作,造成卡顿等不太好的用户体验,更严重的情况是,当计算型事务过多时还有可能因为资源被占满带来网页无响应的卡死现象。因此,Web 项目的本地多线程运算能力势在必行,由此,Web Worker 应运而生了。

点击查看全文 >>

@技术头条 2021-05-28 08:27分享 / 原作者微博:@AlloyTeam / 0个评论
赞过的人: IT技术博客大学习
要不要再学学下面的文章?
处理Exception的几种实践,被很多团队采纳! (mp.weixin.qq.com)
在 Java 中处理异常并不是一个简单的事情。不仅仅初学者很难理解,即使一些有经验的开发者也需要花费很多时间来思考如何处理异常,包括需要处理哪些异常,怎样处理等等。

这也是绝大多数开发团队都会制定一些规则来规范对异常的处理的原因。而团队之间的这些规范往往是截然不同的。

本文给出几个被很多团队使用的异常处理最佳实践。
by @code小生 19小时前 分享 查看详情
业务数据治理体系化思考与实践 (tech.meituan.com)
美团住宿数据治理团队从事数据治理工作多年,从最初的被动、单点治理,发展到后来的主动、专项治理,再发展到现在的体系化、自动化治理。一路走来,他们不断进行积累和沉淀,也在持续思考与实践。目前该团队取得了一些阶段性的成果,并得到美团多个业务线的认可和肯定。过程的经验与教训,希望能和大家分享,也希望能给从事数据治理工作的同学带来一些新思路。
by @技术头条 2022-06-19 23:26 分享 查看详情
美团智能客服核心技术与实践 (tech.meituan.com)
客服是在用户服务体验不完美的情况下,尽可能帮助体验顺畅进行下去的一种解决办法,是问题发生后的一种兜底方案。而智能客服能让大部分简单的问题得以快速自助解决,让复杂问题有机会被人工高效解决。在用户服务的全旅程中,美团平台/搜索与NLP部提供了问题推荐、问题理解、对话管理、答案供给、话术推荐和会话摘要等六大智能客服核心能力,以期达到低成本、高效率、高质量地与用户进行沟通的目的。本文主要介绍了美团智能客服核心技术以及在美团的实践,希望能给从事相关工作的同学带来一些启发或者帮助。
by @技术头条 2022-06-19 23:22 分享 查看详情
新一代CTR预测服务的GPU优化实践 (tech.meituan.com)
CTR模型在互联网的搜索、推荐、广告等场景有着广泛的应用。近年来,随着深度神经网络的引入,CTR模型的推理对硬件算力的要求逐渐增加。本文介绍了美团在CTR模型优化的实践。通过分析模型结构特点,结合GPU硬件架构,我们设计了一系列流程对模型进行定制优化,达到了降低延迟、提高吞吐、节省成本的目标。
by @技术头条 2022-06-19 23:22 分享 查看详情
如何进行 web 性能监控? (www.alloyteam.com)
web 的性能一定程度上影响了用户留存率,Google DoubleClick 研究表明:如果一个移动端页面加载时长超过 3 秒,用户就会放弃而离开。BBC 发现网页加载时长每增加 1 秒,用户就会流失 10%。

我们希望通过监控来知道 web 应用性能的现状和趋势,找到 web 应用的瓶颈?某次发布后的性能情况怎么样?是否发布后对性能有影响?感知到业务出错的概率?业务的稳定性怎么样?
by @技术头条 2022-06-19 23:05 分享 查看详情
FlutterWeb性能优化探索与实践 (tech.meituan.com)
美团外卖商家端基于 FlutterWeb 的技术探索已久,目前在多个业务中落地了App、PC、H5的多端复用,有效提升了产研的整体效率。在这过程中,性能问题是我们面临的最大挑战,本文结合实际业务场景进行思考,介绍美团外卖商家端在 FlutterWeb 性能优化上所进行的探索和实践,希望对大家能有所帮助或启发。
by @技术头条 2022-06-19 22:52 分享 查看详情
TensorFlow在推荐系统中的分布式训练优化实践 (tech.meituan.com)
美团内部深度定制的TensorFlow版本,基于原生TensorFlow 1.x架构与接口,从大规模稀疏参数的支持、训练模式、分布式通信优化、流水线优化、算子优化融合等多维度进行了深度优化。在推荐系统场景,分布式扩展性提升10倍以上,单位算力性能也有显著提升,并在美团内部业务中大量使用,本文介绍了相关的优化与实践工作。
by @技术头条 2022-06-19 22:52 分享 查看详情
4个强大的JavaScript运算符 (mp.weixin.qq.com)
你有没有花一个下午的时间阅读 Mozilla 文档?如果有,你会发现网上有很多 JS 资料,这使我们很容易忽略那些更为基础的 JS 运算符。
这些运算符不常见但很强大!在语法上看起来很相似,作用却不一样,一定要仔细阅读。
by @code小生 2022-06-19 13:31 分享 查看详情
Airbnb是如何从JavaScript迁移到TypeScript的? (mp.weixin.qq.com)
TypeScript 是 Airbnb 前端开发的官方语言。但是,采用 TypeScript 的过程和迁移一个包含成千上万个 JavaScript 文件的成熟代码库不是一夕发生的。TypeScript 的采用经过了最初提案、多数团队采用、测试阶段,最后落地为 Airbnb 前端开发的官方语言。
by @code小生 2022-05-30 21:06 分享 查看详情
服饰3D柔性渲染调研及实践 (fed.taobao.org)
当前全球服装制造的产业链中,我国的中小企业的难以参与到其中利润最高的环节比如产品的设计和研发,主要原因就是服装设计的难度和成本高,因此需要一些创新技术来减少制作成本、降低门槛。
3D服装设计就是解决方案之一,采用3D技术可以直接在虚拟模特上实现打样,并且迭代修改、交付样品也可以通过线上实时完成,相比于传统服装设计方式,大幅减少了服装出品的时间成本,并且也在一定程度上降低了上手难度和学习门槛。
by @技术头条 2022-05-23 00:12 分享 查看详情