如何编写更快的 JS

最后更新于

这篇博客主要是对 4 年前的这篇 Maybe you don't need Rust and WASM to speed up your JS 的笔记。

注意:过早优化是万恶之源,了解这篇博客可能有助于你写出更快的 JS/TS,但是不要一味追求写出让人看不懂的代码。

  1. 调用函数时传递和声明一样多的参数,不使用可选参数。
  2. 单态化函数,简单来说让每个参数的形状(对象的结构、或者函数本身)都永远不变。这个招式平时比较难搓,建议看前面的文章详细理解。
  3. 克制地使用缓存 —— 除非查找它比计算它容易。
  4. 想办法减少 GC 的压力,例如申请一个大的 TypedArray 存储定长数据。
  5. 如果只是在 ASCII 范围内工作,用 Uint8Array 代替 String

还有一些常识:

  1. class 维护对象的形状,不去改变 prototype
  2. 维护形状考虑,不要用 Record<string, X>Map/Set 使 —— 直接用 Map 即可。