(舞台灯光亮起,我调整了一下麦克风,手里拿着一块看起来像乐高积木的东西,那是我的“CPU 模拟器”) 各位好,我是你们的老朋友。今天我们不聊怎么写 useState,也不聊怎么把 useEffect 写得像 while(true) 一样。今天我们要聊点硬核的,聊聊当你那个 React 应用在 8 核 CPU 上跑得飞快,但偶尔卡顿一下时,那个看不见的幕后黑手——CPU 指令预取。 大家都知道,React 是个神奇的工具,它让我们写 UI 就像写函数一样简单。但你也知道,React 也是个“强迫症”。一旦父组件传下来的 props 发生了一丁点微小的变化,哪怕只是你把一个字符串从 “foo” 改成了 “bar”,React 就会像个被踩了尾巴的猫一样,把所有子组件重新渲染一遍。 这事儿在以前还好,因为那时候浏览器还没这么快,电脑还没这么多核。但现在呢?你的组件树可能有三层深,每一层都有几十个子组件。一旦 props 变了,整个 DOM 树可能都要抖三抖。 这时候,shallowEqual 就登场了。它就像是 React 和 CPU 之间的一个翻译官,或者更确切地说,是一个省电管家。 今天 …
继续阅读“React 属性比对的缓存敏感性:探究 shallowEqual 在现代 CPU 指令预取中的性能收益量化分析”