首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Mago 解析 PHP 的速度比 PHP Parser 快了 30 到 58 倍!这真的太惊人了

Mago 解析 PHP 的速度比 PHP Parser 快了 30 到 58 倍!这真的太惊人了

作者头像
Tinywan
发布2026-07-01 18:09:10
发布2026-07-01 18:09:10
370
举报
文章被收录于专栏:开源技术小栈开源技术小栈

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)

  1. mago-syntax(单线程)—— 1.025 秒(基准 30.6x 更快)
  2. ext-ast —— 2.23 秒
  3. halleck45/go-php-parser —— 4.48 秒
  4. z7zmey/php-parser —— 5.67 秒
  5. nikic/php-parser v5 —— 31.4 秒(基准 1.0x)

全核并行

  1. mago-syntax(并行)—— 0.53 秒(基准 58.1x 更快)
  2. ext-ast —— 2.22 秒
  3. halleck45/go-php-parser —— 2.41 秒
  4. z7zmey/php-parser —— 4.22 秒
  5. 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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景:为什么需要对比 PHP Parser?
  • 最新速度排行(2026 年 6 月 30 日数据)
  • 为什么 Mago 能快 30–58 倍?核心原因拆解
    • (1)用 Rust 重写,从 C 级性能到零 GC 成本
    • (2)设计哲学不同:统一 AST + 并行
    • (3)开发者体验也跟着变了
  • 对 PHP 开发者意味着什么?
    • 真实案例感受
  • 如何开始使用 Mago?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档