树摇三家都满分,构建却差出 4 倍:Vite 8 换引擎的实测复盘
很多人升级 Vite 8 时只记住一句话——换成了 Rust 写的 Rolldown更快了。但更快到底快在哪、和原来用的 esbuild、Rollup 又是什么关系很少有人说清。我手工搭了三份结构相同、规模递增的依赖图把 esbuild、Rollup、Rolldown 三台引擎拉到同一基准下各跑一遍结果树摇三家都是 100% 满分真正的差距落在构建时间上最大差出 4 倍多。背景为什么 Vite 8 换引擎这件事值得测Vite 在 8 之前是一个双引擎架构开发态用 esbuild 做依赖预打包生产构建却交给 Rollup。两套解析、两套插件模型最难受的是开发与生产行为不完全对齐——本地没问题上线包却不一样大。2026 年 Vite 8 把生产打包也切到 RolldownRust 实现的 Rollup API 兼容打包器目标就是开发和生产用同一台引擎。但共识归共识落到自己项目上还是三个问题新引擎树摇有没有 Rollup 那么干净和 esbuild 比到底谁快规模变大后差距是收敛还是放大不实测这些都只是文档里的形容词。解剖esbuild / Rollup / Rolldown 到底是什么关系三者不是三代产品而是三种定位不同的打包器恰好被 Vite 在不同阶段用过esbuildGo 写的全能选手bundle minify一条龙速度极快是 Vite 开发态预打包的主力。RollupJS 写的老牌库打包器以树摇最干净著称是 Vite ≤7 的生产引擎。RolldownRust 写、API 对齐 Rollup目标是Rollup 的树摇质量 接近 esbuild 的速度直接成了 Vite 8 的统一引擎。一句话区别以前 Vite 是 esbuild快但不兜底生产配 Rollup稳但慢现在 Rolldown 想一个人把两件事都干了。图1左为 Vite ≤7 的双引擎——开发与生产分属两套解析存在行为对齐缺口右为 Vite 8 统一到 Rolldown 单引擎开发与生产同源。实证同一份依赖图三台引擎跑一遍我没有拿别人仓库跑分而是自己生成了无副作用的纯函数 barrel依赖图保证树摇难度一致、可复现N 个模块每个导出 8 个纯函数返回各自唯一的字符串标记UZ_xxx_yyy一个index.js用export *把所有模块聚成 barrel入口只 import 其中 4 个函数并打印其余数千个导出理论上应被全部消除。死代码有没有被消除用一个笨但可靠的办法验证扫描产物里残留的UZ_标记数量。只要某个没被用到的函数标记还留在产物里就说明没摇干净。依赖图导出总数esbuildRollupRolldown树摇三家120×8 扁平9609.71 ms21.76 ms6.53 ms100%600×8 扁平480033.23 ms103.20 ms24.75 ms100%480×8 两级 barrel384031.09 ms67.81 ms15.86 ms100%把构建总时间画成柱状图更直观——每台引擎一根三组图并排图2颜色越亮越快。Rolldown蓝在每一组都最短Rollup红随规模膨胀最明显。换算成加速比更扎心Rolldown vs Rollup3.3× → 4.2× → 4.3×两级 barrel 下最大Rolldown vs esbuild1.5× → 1.3× → 2.0×两级 barrel 下差距反而拉大。注意第三组是两级export *的深层 barrel——esbuild 和 Rollup 的时间都上去了Rolldown 却几乎没涨。说明Rolldown 对 re-export 链路的处理更跟手规模越复杂它的相对优势越明显。图3左为被测依赖图的解剖绝大多数导出应被消除右为结论卡——树摇三家满分构建时间差出 4 倍以上Rolldown 始终在最左。复现把这份 benchmark 跑起来环境Node 22、esbuild 0.28.1、rollup 4.62.4、rolldown 1.2.1。核心逻辑就三步——生成图、分别打包、统计残留标记# 1. 装三台引擎同目录 npm i esbuild0.28.1 rollup rolldown 2. 生成依赖图N 个模块 × 每模块 8 个纯函数index.js 用 export * 汇聚 入口只 import 4 个函数其余应在产物中消失 3. 三台引擎各自打包minify 统一交给 esbuild.transform保证体积对比公平 node -e const esbuildrequire(esbuild),rolluprequire(rollup),{rolldown}require(rolldown); // ... 见仓库 run.jsbuildEsbuild / buildRollup / buildRolldown 三个函数 4. 统计产物里残留的 UZ_ 标记数 —— 0 即树摇满分 grep -o UZ_[0-9]_[0-9] dist/out.js | sort -u | wc -l完整可跑脚本含三种规模的循环与中值取平均见文末开源地址。构建时间取预热一次后两次平均minify 对三者统一用 esbuild避免不同压缩器干扰时序对比。局限这次实测没覆盖什么诚实地说这是一组受控、干净的 ESM 图它证明了现代引擎对纯函数 barrel 的树摇都已做到满分但没回答另一些更现实的问题带副作用的模块一旦模块顶层有副作用写全局、注册监听三家都会保守保留差异不在摇不摇得掉而在副作用分析是否误伤——本实验未涉及。CJS 互操作大量老库仍是 CommonJSesbuild 与 rollup/rolldown 的commonjs插件策略不同树摇表现可能反转需要单独一局。真实业务图 ≠ 纯函数图组件、CSS、动态 import 会引入本实验没有的边结论需回到你自己的vite build --mode production里再验一次。所以这篇不是 Rollup 该退休了而是在干净 ESM 上树摇已是基础设施级能力Vite 8 把引擎统一后你失去的是双引擎的 parity 风险换来的是 Rolldown 这一档的速度。结论与下一步一句话方法论别再把 tree-shaking 当选型门槛——esbuild、Rollup、Rolldown 对干净 ESM 都是 100%真正要盯的是构建时间与开发/生产一致性而 Rolldown 恰好把这两项一起补上了。升级 Vite 8 时与其担心树摇会不会变差不如直接在自己项目上vite build跑一遍时间对比。开源地址矩阵门户GitHub - wangzifan396-wzf/WB: nano-tools: 400 single-file, zero-dependency, local-first web utilities in one portal. Offline and private, nothing leaves your browser. Binary protocol parsers, crypto, dev, audio, visualization, productivity. · GitHub单文件工具聚合器https://github.com/wangzifan396-wzf/nano-workbenchGitHub 组织主页https://github.com/wangzifan396-wzf

相关新闻

5款视频音效怎么单独提取出来工具盘点,覆盖电脑手机在线方案

5款视频音效怎么单独提取出来工具盘点,覆盖电脑手机在线方案

前阵子公司季度会上录了一段产品讲解,视频里有段切换镜头的音效特别干净,我想单独拎出来放进新的剪辑工程里复用。问题来了:视频里人声、环境音、音效全都粘在一条音轨上,怎么只把那段音效完整地抠出来、存成一个独立的音频文件&a…

2026/8/4 1:40:18 阅读更多 →
企业云盘客户端锁文件机制:AutoCAD 与 Office 编辑如何防版本冲突

企业云盘客户端锁文件机制:AutoCAD 与 Office 编辑如何防版本冲突

企业云盘客户端锁文件机制:AutoCAD 与 Office 编辑如何防版本冲突 在使用企业云盘协作的场景里,版本冲突大概是最让人头疼的问题之一。一个 AutoCAD DWG 文件被两个人同时打开,其中一人的改动被覆盖;一份 Word 文档多人编辑后出现…

2026/8/4 1:40:18 阅读更多 →
Blazor WASM缓存管理:.NET 10自动哈希方案解析

Blazor WASM缓存管理:.NET 10自动哈希方案解析

1. Blazor WASM 缓存问题的前世今生作为.NET生态中最具革命性的前端框架之一,Blazor WASM自诞生起就面临着一个棘手的挑战——客户端缓存管理。这个问题困扰了开发者整整三个大版本周期,直到.NET 10才迎来根本性解决方案。我清晰地记得2020年首次在生产环…

2026/8/4 1:40:18 阅读更多 →

最新新闻

后端性能优化实战:从JVM调优到系统配置的硬件级提升

后端性能优化实战:从JVM调优到系统配置的硬件级提升

最近在技术社区看到不少开发者讨论“打满一小时全场”这类性能优化话题,很多朋友把大量精力花在调参、改算法这些“神经”层面的优化上,却忽略了最基础的“硬件”环境。这就像打篮球只练投篮姿势,却不练体能和力量,关键时刻自然撑…

2026/8/4 2:17:33 阅读更多 →
Unity 2D游戏寻路实战:NavMeshPlus核心优势与四大应用场景详解

Unity 2D游戏寻路实战:NavMeshPlus核心优势与四大应用场景详解

1. 项目概述:为什么NavMeshPlus是2D游戏寻路的“破局者”?在Unity里做2D游戏,寻路功能几乎是绕不开的一环。无论是RTS里的小兵集群冲锋,还是RPG里NPC的智能巡逻,甚至是塔防游戏里怪物沿着蜿蜒曲折的路径前进&#xff0…

2026/8/4 2:17:33 阅读更多 →
C++:splog

C++:splog

C++ 的 spdlog 是高性能日志库之一,只包含头文件(Header-only),并且原生支持多线程、异步日志以及丰富的输出目标(控制台、文件、轮转日志等)。 Logger(日志器): 日志的入口,负责接收消息并分发给 Sink。 Sink(输出目标): 决定日志输出到哪里(如终端、文件、数据…

2026/8/4 2:17:33 阅读更多 →
好用的数据库实时同步软件,首选PanguSync

好用的数据库实时同步软件,首选PanguSync

做运维和开发的朋友应该都清楚,数据库数据同步是日常刚需。不管是数据备份、机房迁移,还是主从数据对接,都离不开靠谱的数据库实时同步软件。市面上很多工具要么配置复杂,要么同步延迟高,普通新手很难上手,…

2026/8/4 2:17:33 阅读更多 →
CUTLASS Python接口:用Python享受CUDA极致性能,AI开发效率提升10倍

CUTLASS Python接口:用Python享受CUDA极致性能,AI开发效率提升10倍

1. 项目概述:当AI开发撞上CUDA的“墙”如果你是一名AI开发者,尤其是深度学习和高性能计算领域的从业者,那么“CUDA”这个词对你来说,大概率是又爱又恨。爱它,是因为它几乎是所有现代AI模型在GPU上飞驰的基石&#xff0…

2026/8/4 2:17:33 阅读更多 →
汪沛走向光大保德信基金:带着底气,也带着难题

汪沛走向光大保德信基金:带着底气,也带着难题

近期的光大保德信基金在资本市场上,可谓是集众多焦点于一身。一是因为该公司旗下部分重仓科技赛道的基金,在二季度展现出了强劲的爆发力,净值得到大幅攀升。二是因为该公司整体权益业务长期承压,多支产品面临规模缩水与清盘风险。…

2026/8/4 2:16:32 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/3 4:36:35 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →