Node.js 2026上半年都有哪些性能提升?

Node.js 的核心仓库今年 1 到 6 月,每个月都落了一批性能改动,多数人升级之后只觉得快了点,说不清快在哪。

把这些改动按月整理成帖的人是 Gürgün Dayıoğlu,Node.js 核心协作者,也是 Fastify 的维护者,他从十月起每月写一篇。

一月动的是文本编码和 CommonJS 导入。

TextEncoder.encode() 是浏览器和 Node 通用的字符串转字节接口,底层换成 simdutf,一个用 SIMD 指令批量处理 UTF-8 的库,比逐字符转换快得多。

js 复制代码
const bytes = new TextEncoder().encode("你好,Node.js");
const text = new TextDecoder().decode(bytes);

CJS 那边的分析器换成了一个叫 merve 的实现。

require() 的写法没变,变的是第一次读文件扫导出名那一步,CLI 工具和测试启动这类一次性进程体感最明显,冷导入快了约 25%。

二月是启动和缓冲写入。

Node 的 ESM 加载器以前每次启动都要从头搭一遍,现在直接打进启动快照,ESM 启动快了 6.06%。

js 复制代码
import { readFile } from "node:fs/promises";

const text = await readFile("./data.txt", "utf8");

buf.write() 也换成 simdutf,2048 字符的写入快了 577%,序列化、数据库驱动这类把文本塞进 Buffer 的代码收益最大。

js 复制代码
const buf = Buffer.alloc(2048);
buf.write("一段不短的文本", "utf8");

同月 util.styleText() 在不需要校验流时走了快路径。

三月是 Buffer。

Buffer.copyBytesFrom() 带偏移量的调用快了 210%,同批还改了别的 Buffer 操作。

js 复制代码
const src = Buffer.from("abcdef");
const dst = Buffer.alloc(3);

Buffer.copyBytesFrom(dst, src, 1);
console.log(dst.toString()); // bcd

加密这边是 EC 公钥导入。

JWT 验签常要把公钥从 JWK 导进来,JWK 就是这种公钥的 JSON 写法,导入速度从每秒 76259 次提到 168920 次。

js 复制代码
import { createPublicKey } from "node:crypto";

const key = createPublicKey({ key: jwk, format: "jwk" });

EventEmitter 发射时不再克隆监听器数组,Web Streams 的 pipeTo() 也轻了一些,这批随 24.15.0 与 26 发布。

四月最零碎,都落在常用接口上。

URLSearchParams 遇到重复键时,set() 和 delete() 以前要反复扫全表,delete() 在极端场景快了 1852%,日常没这么夸张,但多余的扫描确实没了。

js 复制代码
const params = new URLSearchParams("a=1&a=2&a=3");

params.delete("a");

Buffer.toString("hex") 在 64 字节的小 Buffer 上快了 41.64%,哈希、ID、token 打日志都走这条路。

js 复制代码
const id = Buffer.from("hi").toString("hex"); // 6869

内置的 node:sqlite 读文本列快了 29.51%,纯 ASCII 文本占的内存也少了。

实验性的 node:ffi 给传数字和指针的调用加了快路径,指针调用快 60%。

process.nextTick() 在没有待处理 promise 时跳过拒绝检查,每秒从 692 万次到 904 万次。

四月这批随 26.1.0 与 24.16.0 发布。

五月偏 Web 平台。

util.styleText() 用十六进制颜色时以前每次新建格式化器,现在加了缓存,快了 1135%。

js 复制代码
import { styleText } from "node:util";

console.log(styleText("red", "构建失败"));

crypto.subtle 每次调用都要先判断用哪个算法,这一步快了 164.69%。

QUIC 是 HTTP/3 底下那个传输协议,Node 的支持还在实验阶段,一批包处理改动让它每秒请求数高了约 10%。

五月随 26.3.0 与 24.19.0 发布。

这六个月的东西分散在几层,横着看就是下面这张图的形状。

六月几乎全是文本。

TextEncoder.encode() 以前先把字符串复制一份再编码,现在省掉这步,8 KB 字符串快了 43.9%。

js 复制代码
const big = "a".repeat(8192);
const bytes = new TextEncoder().encode(big);

buf.copy() 复制 Buffer 切片快了 22.33%,pipeTo() 每个 chunk 少做一点事,吞吐高了约 5%。

事件循环在没有排队任务时跳过内部回调检查,从每秒 77957 次到 81438 次,每个 Node 进程都吃到。

六月随 26.5.0 发布。

帖子里写明了版本的月份,就是下面这几条。

升级不用改代码,24.x 与 26.x 的小版本里都有了。

想知道自己的版本吃到哪批,去 changelog 搜 perf。

Node.js 全部版本:https://nodejs.org/en/about/previous-releases。

你平时会为了启动时间升级运行时吗,欢迎在评论区说说。


关于我:

  • 农村程序员(2020年回农村,至今未出村)
  • 独立开发者(致力于开发 1000 个小产品)
  • 技术观察者(分享编程技术,行业资讯等)
  • 前端之虎陈随易(自封的)
  • 我的官网是:https://yicode.tech
相关推荐
hhcgchpspk22 分钟前
flask服务端页面预防被爬措施
后端·python·flask·网络爬虫·防爬
vipxieliang27 分钟前
Python collections:高效容器与实战案例
后端·python
墨林陌36 分钟前
AI 热点日报(2026-11-09):苹果代理式Siri曝光,Anthropic推进IPO,编码智能体实测翻车
前端
vipxieliang38 分钟前
JavaScript 迭代器与生成器:控制异步与惰性求值
前端·javascript
驭渊的小故事41 分钟前
Spring AOP 核心概念与通知类型详解
java·后端·spring
vipxieliang42 分钟前
ValidX vs 手写验证代码:开发效率对比实测
java·spring boot·后端
Hilaku1 小时前
Event Loop 这篇你看完就不用再看别的了!
前端·javascript·程序员
vipxieliang1 小时前
Go GC 性能优化实践:从 GOGC、GOMEMLIMIT 到分配优化
后端·go
海豚调度1 小时前
Apache DolphinScheduler 2026 年 10 月社区贡献总结报告
后端