Wink Pings

PHP 调个 git --version 快了 62%,短进程的固定税该降了

symfony/process 的新 PR 把短进程基准拉了一遍:git --version 从 1.61ms 到 0.61ms,echo hi 从 1.41ms 到 0.41ms。单 CPU 条件下,first call 也有 45% 到 51% 的提升。别小看这些毫秒。

symfony/process 针对短进程做了一轮优化。m@ttias 在推文里贴出一组基准,指向 symfony/symfony 的 PR #67827:在单 CPU 上运行 PHP 基准,PHP 和子进程放在同一个核上,短命令的耗时被明显压低。

symfony/process 短进程性能提升对比表格

表格里四个场景:

  • git --version 从 1.61ms 降到 0.61ms,提升 62.1%
  • git --version, first call 从 2.22ms 降到 1.20ms,提升 45.7%
  • echo hi 从 1.41ms 降到 0.41ms,提升 71.3%
  • echo hi, first call 从 2.02ms 降到 0.98ms,提升 51.6%

symfony/process 是 PHP 生态里启动和管理子进程的组件。很多 CLI 工具、测试脚本、构建流程会通过它调用外部命令。如果你不写 PHP,可以把它理解成一层进程启动胶水:程序叫另一个程序干活,中间要付出创建进程、初始化、回收资源的固定开销。

这组数据有意思的地方在于,被优化的不是长任务,而是短到容易被忽略的命令。git --version 和 echo hi 单次看只是毫秒级,放在循环、测试套件、CI、编辑器插件里反复调用,就会变成一笔持续缴纳的固定税。first call 的数据也说明初始化成本还在,但路径已经短了一截。

62% 是特定基准下的数字,不是所有场景都能复现。单 CPU 条件也意味着并发和调度因素被压到很低。能确定的是,PR 改到了短进程路径上,收益来自减少无谓开销。这类改动不增加功能,也不制造新概念,但它每天都在替调用方省钱。工程里最容易被忽视的收益,常常就藏在这种地方。

来源:https://x.com/mattiasgeniar/status/2117679493649469646

PR:https://github.com/symfony/symfony/pull/67827

发布时间: 2026-11-04 02:30