2026 年 6 月底,Rust 生态中的 PHP 解析器「Mago-syntax」在 Tomas Votruba 发起的 PHP Parser 速度对比测试项目里,彻底炸场了。
在 Laravel 整个框架(src/ + vendor/ 目录,数万 PHP 文件)上,单核场景下 Mago 比最慢的 nikic/php-parser 快 30.6 倍;全核并行场景下更是快 58.1 倍!
一句话:“传统 PHP 解析器还在原地踏步,Rust 版的 Mago 已经把 PHP 解析器拉开了 30–58 倍的差距!”
这不是夸张,是实打实的基准测试结果。让我们一起拆解这个现象背后的原因,以及它对 PHP 生态意味着什么。
背景:为什么需要对比 PHP Parser?
PHP 开发中,AST(Abstract Syntax Tree)解析无处不在:
- 静态分析(PHPStan、Psalm、Phan)
- 代码格式化(PHP-CS-Fixer、Prettier PHP)
- 语法高亮、代码补全(IDE)
- 代码审查工具
- 甚至 AI 工具的代码理解(Claude Code、Cursor 等)
传统主流 PHP Parser 主要有:
- nikic/php-parser(最成熟、社区最多)
- php-ast(C 扩展版)
- Go 系:z7zmey/php-parser、halleck45/go-php-parser
- 现在还有 Rust 系:mago-syntax
这些工具在 GitHub Actions 里每 12 小时自动测试一次:每次都全新克隆 Laravel 完整框架,对所有 .php 文件进行解析,跑 5 次取平均时间。
结果出炉后,直接震惊了整个 PHP 社区。
最新速度排行(2026 年 6 月 30 日数据)
单核(taskset -c 0):
- mago-syntax(单线程)—— 1.025 秒(基准 30.6x 更快)
- ext-ast —— 2.23 秒
- halleck45/go-php-parser —— 4.48 秒
- z7zmey/php-parser —— 5.67 秒
- nikic/php-parser v5 —— 31.4 秒(基准 1.0x)
全核并行:
- mago-syntax(并行)—— 0.53 秒(基准 58.1x 更快)
- ext-ast —— 2.22 秒
- halleck45/go-php-parser —— 2.41 秒
- z7zmey/php-parser —— 4.22 秒
- nikic/php-parser v5 —— 30.8 秒
关键洞见:
- Mago 是唯一真正支持并行解析的工具(利用 Rust 的并发原语)。
- PHP 原生工具(nikic + ext-ast)几乎不受多核影响,因为单线程。
- Go 系工具因为 GC 和调度器,多核有一定收益,但远不及 Rust。
为什么 Mago 能快 30–58 倍?核心原因拆解
(1)用 Rust 重写,从 C 级性能到零 GC 成本
PHP Parser 用 C/C++ 编写,但依然有:
- 内存分配开销
- 垃圾回收压力
- GOMAXPROCS 限制
- 解释器层额外成本
Mago-syntax 是纯 Rust(mago-syntax crate v1.42),零 GC、无解释器、内存效率极高。Rust 编译器在代码生成和内存管理上天生更优。
(2)设计哲学不同:统一 AST + 并行
- 传统 PHP Parser 往往是“库”——需要单独调用。
- Mago 把 lexer、parser、AST、linter、formatter 全部集成在同一个 Rust 二进制中。
- 核心优势:从源代码到 AST 一步到位,再从 AST 驱动后续所有工具,中间无序列化/反序列化开销。
(3)开发者体验也跟着变了
Mago 官方文档和基准报告显示:在 WordPress 完整代码库上:
- 静态分析:1.46s(Phan 66s、PHPStan 55s —— 快 45x)
- Linting:0.88s(PHP-CS-Fixer 25s —— 快 29x)
- Formatting:0.43s(Prettier PHP 24s —— 快 56x)
这正是因为整个 toolchain 都是 Rust 原生,不需要依赖 PHP 解释器。
对 PHP 开发者意味着什么?
2026 年,PHP 开发者终于可以享受到Rust 级别的工具链了:
- 速度革命:以前 10 分钟才能跑完的 lint + 分析,现在 1 秒;以前几秒才能格式化的代码,现在 0.4 秒。
- 生态统一:不再需要 5–6 个单独的工具(PHPStan + PHP-CS-Fixer + PHP-CS-Fixer + Phan + Prettier PHP),Mago 全部包揽,还能自定义规则。
- IDE 集成潜力:速度快到可以实时运行(“保存后自动检查”),对比 PHPStan 的几秒延迟,这简直是降维打击。
- 未来潜力:Mago 已经支持 PHP 8.5 新特性(如 Pipe Operator |>),未来还会持续迭代。Carthage Software 团队表示,目标是让 PHP 项目“outgrow their tooling patience”。
真实案例感受
想象一下:
- 你在 Laravel 项目里跑
phpstan:现在可能需要等 20–30 秒。 - 换成 Mago:0.5 秒出结果,错误列表、修复建议、格式化全在同一份工具里。
- 团队协作时,代码审查从“等半天”变成“几秒钟就能看到”,生产力直接起飞。
很多开发者在 Hacker News 和 Reddit 上直呼:“终于有属于 PHP 的 Rust 武器了!”
如何开始使用 Mago?
请看这里,之前发过的文章:
Tinywan,公众号:开源技术小栈Mago 刚刚用 Rust 重写了所有 PHP 工具?
项目:https://github.com/TomasVotruba/php-parser-speed-comparison-2026