在 php 7.4+ 和 composer 2.x 下,composer dump-autoload -o 基本不再提速,甚至可能拖慢冷启动;composer 2 默认启用 classmap 自动发现 + psr-4 快速查找双策略,已足够高效。
dump-autoload -o 真的还能提速吗?
在 PHP 7.4+ 和 Composer 2.x 环境下,composer dump-autoload -o(即优化模式)基本不再带来可观性能提升,甚至可能因类映射膨胀而拖慢冷启动。Composer 2 默认启用「classmap 自动发现 + PSR-4 快速查找」双策略,已足够高效。
什么时候该用 -o,什么时候该避开?
仅当项目存在大量非标准路径的 .php 文件(如插件目录、模板逻辑文件),且这些文件通过 classmap 显式声明时,-o 才有意义;否则它只是把所有 PSR-4 映射硬编码进 vendor/composer/autoload_classmap.php,反而增加内存占用和加载延迟。
- 用
-o:遗留系统中混用classmap+ 手动 require 的场景 - 不用
-o:标准 Laravel、Symfony、纯 PSR-4 项目(包括绝大多数现代框架) - 验证方式:对比
composer dump-autoload和composer dump-autoload -o后,执行php -d display_errors=1 -r "require 'vendor/autoload.php';"的耗时
真正影响自动加载性能的关键点
比是否加 -o 更关键的是 autoload 配置本身是否合理: