Node.js 异步 zstd 压缩慢 23 倍,一个 PR 修复性能黑洞
DanielLockyer · x · 2026-09-28
开发者 Cherry 发现 Node.js 的 zlib.zstdCompress()(异步版)在压缩同一批文件时比 zstdCompressSync() 慢 3-5 倍,甚至可达 23 倍(4.5s → 0.19s)。
原因:同步版一次性把输入交给 zstd,zstd 能推断输入大小;异步版分多次写入并在单独调用中结束帧,zstd 始终不知道输入大小,只能按无界流来分配内部表,导致性能大幅下降。
修复:向 Node.js 提交的 PR #66358 在 zstdCompress() 中默认把 pledgedSrcSize 设为输入的字节长度。实测 162 个生产构建的 JS/CSS/SVG 文件(单个最大约 370KB,Linux x64),修复后异步输出与同步版完全一致,且各压缩级别均大幅提速:level 9 从 300ms 降至 113ms,level 12 从 4521ms 降至 194ms,level 19 从 9696ms 降至 1474ms。Windows 上表现相同。
「编程与Agent」频道最新
- 用 Codex 从 2 万粉丝里挖出 173 名大厂 AI 员工 — Hesamation · 2026-09-28
- 非程序员单干者靠 $99 产品做代理服务,已入账 4.5 万美元 — tibo_maker · 2026-09-28
- 治理 AI Agent 不能只设围栏,先要定义它的目标 — forevergeeks · 2026-09-28
- 把几十个脚本全丢给 Claude 跑终端,AI 原生开发者与传统程序员起分歧 — sven_ai · 2026-09-28
- Cloudflare Agents SDK 周下载量破 200 万,生态增长迅猛 — threepointone · 2026-09-28
- 设计师用 Claude Code 两个月写出 Scenri:AI 产品图里人物不再变脸 — Tonjiez · 2026-09-28