carthage-software/mago
Mago is an extremely fast PHP linter, formatter, and static analyzer written in Rust. It helps teams catch issues early, enforce consistent style, and improve code quality across projects, with multiple install options like script, Homebrew, Composer, and Cargo.
+++ title = "基准测试" description = "Mago 与其他 PHP 工具的对比,以及为达到这个水准所做的取舍。" nav_order = 20 nav_section = "参考" +++
Mago 的目标是成为最快的 PHP 工具链。从语法分析器到分析器,每一个组件都围绕这个约束来设计。
我们定期在 PHP 生态的其他工具上对 Mago 进行基准测试。最新数据与历史曲线都在专门的看板上:
看板针对若干真实 PHP 代码库运行三类基准:
速度不是目标,而是承诺。如果基准测试中列出的任何工具在同等对比下超过 Mago,我们将其视为高优先级 bug。
内存占用因任务而异。对于静态分析,Mago 通常比同类工具占用更少内存(在我们的运行中比 Psalm 少约 3.5 倍)。对于 lint 和格式化,Mago 可能比单线程的 PHP 工具占用更多内存。
这是有意为之。Mago 优先考虑你的时间,而不是机器资源。
为了达到我们想要的速度,Mago 使用每线程的 arena 分配器。它不会为每个小对象都向操作系统申请内存,而是预先保留大块内存,在其中以接近零成本的代价完成分配。这使得高强度并行成为可能,代价是某些工作负载下的峰值内存占用更高。我们认为,用几百兆 RAM 换回几秒(甚至几分钟)的开发者时间,是一笔划算的交易。
How can I help you explore Laravel packages today?