网易首页 > 网易号 > 正文 申请入驻

Meta 发布开源 React 编译器:开发者无痛升级,爽翻天!

0
分享至


作者 | Loraine Lawson

译者 | 刘雅梦

策划 | Tina


Meta 周三在拉斯维加斯举行的 React 大会上发布了 React 的开源编译器,并进行了直播。Meta React 团队成员、用户界面工程师 Joe Savona 表示,该团队在过去几年中一直在开发编译器。

“React Compiler 会自动优化组件和钩子,因此只有 UI 的最小部分会随着状态的变化而更新。”Savona 告诉听众。“所以这看起来很神奇。”

为什么要使用 React Compiler?

为什么解释语言需要编译器?Savona 将 React Compiler 与 Meta 的 Hermes 和 V8 Alliance 的 V8 进行了比较,后者是包含了编译器的 JavaScript 引擎。

“React Compiler 更像 TypeScript,或者 JavaScript 引擎中的编译器,比如 V8 或 Hermes,”他说到。“它将我们的代码分解成单独的表达式,并构建一个控制流和数据流图。它执行复杂的优化,如死代码消除、常量传播、类型推断,甚至别名分析等等。”

他补充道:“这些优化通常会出现在 JavaScript 引擎或 Rust 或 C++ 等语言的编译器中。”。他继续说道:“React Compiler 将这些思想应用于 JavaScript,在不牺牲开发者体验的情况下提高了性能。”。他说:“代码不会改变,但在默认情况下,应用程序和更新会更快。”

“事实上,我们的代码变得更加干净和简洁了,因为我们不需要手动记忆化备忘,”Savona 补充道。记忆化备忘技术(Memoization)是一种利用缓存的优化技术。

React Compiler 在代码中的应用

他提到了一个用 React 构建的媒体播放器的早期演示。他说,没有使用备忘录调用,没有随机和不必要的回调函数,但代码中包含了许多开发人员可能不会经常考虑的信息。

“例如,考虑过滤后的歌曲列表,”他说到。“React 显然需要再次过滤歌曲列表并更新播放列表。这段代码还告诉我们相反的情况;如果歌曲没有改变,那么 React 就不应该更新过滤后的歌曲,也不需要更新播放列表”

这正是编译器启用后所发生的事情,他补充道:当歌曲没有变化时,就没有必要更新播放列表。

“我们之所以能够理解这一点,是因为 JavaScript 和 React 有明确的工作规则,我们已经学会了这些规则。”Savona 说到,“我们每天都在阅读代码、编写代码、调试代码以及偶尔测试代码时使用它们。”

编译器可以学习理解那些规则。然后,“它可以’以与我们非常相似的方式‘’看到‘代码,只是它要彻底得多。”他补充道。

他说,它可以将相同的过程应用于代码中的每个值,创建表述一个数据如何在用户界面中移动的计算图。

“编译器知道 React 的规则,它还知道一些额外的东西,”他继续说道。“例如,它知道集合状态函数实际上不会改变,所以编译器不必考虑该值是否可以更新。所以我们可以删除这种依赖边。”

那么,唯一需要更新的就是现在播放的内容,而不是整个播放列表。

“最棒的是,所有这些信息都来自我们今天已经在写的 React 组件和钩子。”他说到。“没有需要学习的 API。没有必要改变我们编写代码的方式。我们可以简单地利用现今代码中已经存在的所有信息。”

他补充道,这些类型的精确 UI 更新有时被称为细粒度响应。

随后,Meta 软件工程师 Mofei Zhang 上台展示了编译器在 Meta 应用程序上的运行情况。在具有大量交互性或组件的页面上,Meta 发现开发者开始进行权衡。

“我们看到的一小部分代码样本很难阅读。”张说到。“这段代码包含了很多手动优化,这有助于让 UI 感觉更敏捷,但也让代码更难理解。”

她展示了一个代码片段,其中有将近 20 个地方是开发人员手工优化的对象。

Meta 在 Instagram 和 Quest 上

尝试使用 React Compiler

在 2023 年,Meta 开始在两个应用程序上使用 React Compiler:Instagram.com 及其 Quest 商店,这是 Meta 的 Quest VR 设备的应用程序商店。她说,编译器优化版本的速度是以前的两倍多。初始加载时间和跨页面导航时间提高了 12%。而且对内存使用率或整体崩溃情况都没有影响,这可以通过内存不足的错误反映出来。导航任务加载速度至少提高了 4%。Instagram 在每条路线上平均提高了 3%。

“在 Meta,这真的是一件大事,”张说到。“为了将这些数字放在上下文中,工程师们梳理了这些应用程序的每一个细节,添加了数千个记忆化备忘调用。”

她补充道,通常情况下,在一个特定的页面上,只要在指标上提高 1 或 2 个百分点,比如第一次绘制,就会是一件大事。

“React Compiler 几乎大大提高了它推出的每个页面的性能。”她说到。“在优化程度较低的应用程序上,我们发现 React Compiler 可以添加超过 15 倍于源代码中已有的记忆量。”

她总结道,使用编译器将使开发人员能够 在尚未手动优化的应用程序上进行快速交互,同时提高已优化应用程序的可读性和可维护性。开发人员甚至可以去掉手工编码的记忆化备忘。

她说:“我们已经看到 React 编译器甚至可以提高应用程序的速度上限,因为它可以比开发人员通过嵌套和条件记忆化存储以及复杂的静态分析进行更多的优化。”。“我们将继续推出更多的应用程序来迭代编译器。”

除了 开源代码 外,React Compiler 还为那些想要探索其工作原理的开发人员提供了 一个游乐场。

最后,Savona 再次上台结束了演讲。

“React Compiler 允许开发人员继续编写与我们的习惯完全相同的代码,”他说到。“事实上,正如我们所看到的,我们可以停止使用手动记忆化备忘……React Compiler 可以为实际应用程序提供显著的性能改进。”

https://thenewstack.io/meta-releases-open-source-react-compiler/

声明:本文为 InfoQ 翻译,未经许可禁止转载。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
沈亮从浙江到福建任职,升副厅

沈亮从浙江到福建任职,升副厅

鲁中晨报
2024-11-15 15:00:05
被年轻人家里的“洗碗机用法”惊呆了!换个思路后,家务少一半

被年轻人家里的“洗碗机用法”惊呆了!换个思路后,家务少一半

装修秀
2024-11-15 10:45:03
中央环保督察通报安徽一修造船企业污水直排长江,县委书记当天赴现场督导

中央环保督察通报安徽一修造船企业污水直排长江,县委书记当天赴现场督导

澎湃新闻
2024-11-15 15:48:28
失业率飙升,中国为什么依然很平稳?老百姓都是咋过的?

失业率飙升,中国为什么依然很平稳?老百姓都是咋过的?

阿凫爱吐槽
2024-11-15 14:06:46
真就保送❓卡塔尔最后1人犯规韩国主裁仅掏黄牌,超时6分钟绝杀❗

真就保送❓卡塔尔最后1人犯规韩国主裁仅掏黄牌,超时6分钟绝杀❗

直播吧
2024-11-15 17:08:33
农业农村部原党组书记、部长唐仁健被“双开”

农业农村部原党组书记、部长唐仁健被“双开”

新京报
2024-11-15 16:06:59
价值十几亿的手机被烧毁?京东物流辟谣

价值十几亿的手机被烧毁?京东物流辟谣

界面新闻
2024-11-15 16:45:52
反诈老陈称当年辞职太冲动:看不起现在的自己

反诈老陈称当年辞职太冲动:看不起现在的自己

大象新闻
2024-11-15 14:08:34
我们只配有小米加步枪?美新防长:中国武器全部都是针对美军的

我们只配有小米加步枪?美新防长:中国武器全部都是针对美军的

大风文字
2024-11-14 19:12:19
多名消费者称网购黄金后“麦多多”失联不发货:已报警,案值或超千万

多名消费者称网购黄金后“麦多多”失联不发货:已报警,案值或超千万

澎湃新闻
2024-11-15 14:18:30
以军抓获数十名哈马斯!躲在地道一个月没出来透气全部身穿防护服

以军抓获数十名哈马斯!躲在地道一个月没出来透气全部身穿防护服

大风文字
2024-11-15 10:57:49
900亿大牛股,突然跌停!

900亿大牛股,突然跌停!

中国基金报
2024-11-15 14:40:13
网友评价:特朗普这届内阁,可谓歹徒分赃,堪称“类人群猩闪耀时”

网友评价:特朗普这届内阁,可谓歹徒分赃,堪称“类人群猩闪耀时”

老郭在学习
2024-11-15 11:15:05
村委会发通知“未缴医保不给盖章,年终困难照顾不予考虑”?镇政府:正核实

村委会发通知“未缴医保不给盖章,年终困难照顾不予考虑”?镇政府:正核实

极目新闻
2024-11-15 11:39:37
突发!集体跳水!

突发!集体跳水!

证券时报e公司
2024-11-15 14:39:28
李光洁:一婚娶郝蕾,二婚娶90后小娇妻,如今给“华妃“当老公?

李光洁:一婚娶郝蕾,二婚娶90后小娇妻,如今给“华妃“当老公?

柴叔带你看电影
2024-11-14 16:18:05
除夕重回法定假期,但令人“恶心”的事情,又在全国各地发生了!

除夕重回法定假期,但令人“恶心”的事情,又在全国各地发生了!

晓徙历史
2024-11-15 10:27:23
湖南新田15岁孩子骑车摔倒,被供电公司车辆撞上身亡?公司:需等警方调查结论

湖南新田15岁孩子骑车摔倒,被供电公司车辆撞上身亡?公司:需等警方调查结论

极目新闻
2024-11-15 09:44:26
爱奇艺发布国足vs巴林转播致歉声明,提供退款处理和权益补偿

爱奇艺发布国足vs巴林转播致歉声明,提供退款处理和权益补偿

懂球帝
2024-11-15 12:12:10
364元/斤!杭州刚刚上市!一口咬下去就是7块钱

364元/斤!杭州刚刚上市!一口咬下去就是7块钱

FM93浙江交通之声
2024-11-15 10:59:11
2024-11-15 17:42:44
InfoQ
InfoQ
有内容的技术社区媒体
10386文章数 50890关注度
往期回顾 全部

科技要闻

奇瑞董事长夸余承东:你改名余成功吧

头条要闻

多人称网购黄金后"麦多多"失联不发货 案值或超千万

头条要闻

多人称网购黄金后"麦多多"失联不发货 案值或超千万

体育要闻

我们究竟需要一支怎样的国家队?

娱乐要闻

俞灏明迎37岁生日,疑似与王晓晨相恋

财经要闻

GDP唯一负增长!这个经济特区难了

汽车要闻

配易四方+云辇-Z系统 仰望U7于广州车展亮相

态度原创

亲子
本地
时尚
家居
公开课

亲子要闻

5岁小女孩跳街舞,感觉她眼睛都在用力。

本地新闻

重庆记忆|山城特色“过山车”上天入地穿花海

最万能的“内搭”,美翻了!

家居要闻

现代简约 彰显实用性

公开课

一块玻璃,如何改变人类世界?

无障碍浏览 进入关怀版