性能基准
这份基准用于帮助你选择 Vext HTTP Adapter。它固定同一个 Vext 应用,在相同的轻量 Normal 负载下比较五个受支持的 Adapter。它适合作为 Adapter 选型输入,不替代你的应用在真实中间件、鉴权、日志、数据库和部署环境下的压测。
先看结论
- 这是 Adapter 对比,不是跨框架排行榜。 每一行均使用相同的 Vext routes、Normal bootstrap、handler 模式、HTTP 契约、中间件 fixture 和压测协议;唯一变量是 Adapter。
- 本机和本负载下 Native 的吞吐最高。 这是当前环境观测,不是它在所有环境中都最优的承诺。
- 本样本中 Fastify 与 Koa 的吞吐随后,Hono 与 Express 则取舍各自的编程模型和生态。 对于较小差异,请结合 CV 和延迟数据判断。
- 先按集成和迁移需求选择,再用你的业务复测。 Native 是依赖更轻的默认路径;需要相应生态时选择 Fastify、Express、Koa 或 Hono。
范围说明: 本页比较同一个 Vext Normal 应用通过不同 Vext Adapter 的开销。表中的
Fastify、Hono、Express和Koa列不是这些框架的独立或裸性能,也不代表它们各自推荐生产配置的性能。生产选型请以你的应用、实际中间件与部署配置的压测为准。
当前结果
本次正式运行记录于 2026-08-15T00:07:37.413Z,使用干净的 Vext 源码 main@772d3eab9f3826a55526deaf2ad6b1c128bda446(Vext 1.0.1;Node.js v20.20.2)。所有数字均为 7 轮 req/s 的中位数,数值越高表示该测试场景中的吞吐越高。
全部 20 个 Adapter/场景测量均为零错误、零超时、零非 2xx 响应。每个场景的 CV 在 0.2%–1.4% 之间。完整的逐轮样本、P50/P99、精确版本、provenance 和路由生命周期 telemetry 均在本页下方。
为什么这样对比
面向使用者的决策是选择哪个 Vext Adapter,所以每个目标均运行同一个 Vext Normal 应用。routes、defineRoutes() 加载、路由匹配、请求/响应对象、中间件 fixture、handler 模式、响应契约、进程优先级和 Autocannon 协议均保持不变,唯一变量是 Adapter。
fixture 有意关闭这些 GET 场景不使用的可选请求能力:access log、生成的 request ID、CORS、rate limit、response wrap、body parser、request context、session、CSRF、security headers、frontend render 和应用日志。它仍保留 Normal bootstrap 与路由生命周期。因此比较具有聚焦性和可复现性,但它不是全能力生产负载,也不是数据库/I/O 基准。
为什么不发布“生产栈排行”或“裸路径排行”?
生产压测是上线前的必要步骤,但认证、日志、安全、中间件、数据与外部 I/O、部署拓扑、硬件和业务复杂度都会不同。把这些结果放进一张跨框架 RPS 表,测到的是整套应用组合,不能可靠归因为框架或 Adapter。
另一端的裸路径或最短 HTTP 路径对维护者有诊断价值,但会省略 Vext 使用者实际选择的 Normal bootstrap、路由生命周期、请求/响应适配和中间件集成,因此不应用作用户选型排名。
本页固定同一个 Vext Normal 应用与压测协议,只更换 Adapter。它衡量的是固定、可复现负载下的 Vext Adapter 集成路径开销,不是 Fastify、Hono、Express 或 Koa 的独立性能。生产选型仍应以你的真实应用压测为准。
如何选择
详细安装和配置请参见 Adapter 指南。
测试口径
正式运行前,runner 会将这些依赖与当日 npm latest 核对;任一版本、源码身份、非 2xx、连接错误、超时、缺失结果或 CV 门禁失败都会拒绝生成可引用报告。目标按轮次交错执行,减少时间漂移固定偏向某一实现。
完整正式样本
此完整正式样本与上方当前结果摘要由同一 artifact 生成,并保留在本页中,使结论、方法和每一条测量数据可以一起审阅。
运行身份
场景
每一个测量样本
Normal 路由生命周期 telemetry
精确环境与版本
自己复现
先安装锁文件中的依赖并确认 benchmark 版本仍是当前 npm latest:
运行与本页一致的公开 Adapter 对照:
本样本使用同步 handler。如果你的平台或权限需要不同的优先级,请改用可用值,并将结果视为新的环境基线,不要直接与本页绝对数值比较。
runner 使用本地 Autocannon programmatic API,会自动启动和停止测试目标。本页包含全部样本、P50/P99、精确版本、provenance 和路由生命周期 telemetry;完整参数、adapter matrix 命令和 artifact 合并规则见 benchmark README。
测试真实应用
框架微基准只回答“核心 HTTP 路径的成本”。上线前至少应在与你的生产环境相近的机器上加入:
- 实际认证、日志、响应包装和中间件;
- 数据库、缓存和外部 API 的真实或可控替身;
- 预热、多个轮次、吞吐、P95/P99、错误率和资源占用;
- 与生产一致的 Node.js 版本、进程数、容器限额和反向代理。
限制
- 当前结果来自一台 Windows 主机,不代表 Linux、容器或云环境。
- 这是轻量 HTTP 微基准,不衡量开发体验、插件质量、可维护性或完整业务延迟。
- 不同日期、机器、依赖版本、handler 模式或压测协议的绝对数字不可直接合并排名。
- 本表只比较 Vext Adapter。裸框架与最短路径诊断单独维护,不是面向使用者的 Adapter 排名。