# 优化器 TypePHP 在语义分析阶段运行一组 **SSA(静态单赋值)驱动**的优化器,目标是减少运行时开销与生成的 C++ 体积。优化入口与 SSA 构建分别在 `src/Optimizer/` 与 `src/Analysis/SsaBuilder.php`。 Sources: [src/Optimizer/](src/Optimizer/) · [src/Analysis/SsaBuilder.php](src/Analysis/SsaBuilder.php) ## 优化器清单 | 类 | 作用 | |---|---| | `SsaBuilder` | 构建 SSA 形式,为下游优化提供定义-使用链 | | `SsaTypeOptimizer` | 基于 SSA 的类型推导,传播确定类型以去除运行时 `php::Var` 装箱 | | `SsaPropOptimizer` | 属性类型的 SSA 推导与去虚化 | | `FuncCallOptimizer` | 函数调用优化(内联候选、已知函数特化等) | | `LoopVarOptimizer` | 循环变量类型/作用域优化 | Sources: [src/Optimizer/SsaTypeOptimizer.php](src/Optimizer/SsaTypeOptimizer.php) · [src/Optimizer/SsaPropOptimizer.php](src/Optimizer/SsaPropOptimizer.php) · [src/Optimizer/FuncCallOptimizer.php](src/Optimizer/FuncCallOptimizer.php) · [src/Optimizer/LoopVarOptimizer.php](src/Optimizer/LoopVarOptimizer.php) ## 与优化级别的关系 命令行 `-O `(0–3)控制优化强度:级别越高,优化器介入越深、生成代码越紧凑,但编译期耗时也越大;`-d/--debug` 会关闭优化并加调试符号。 Sources: [src/Translator.php](src/Translator.php#L234-L236) · [src/Translator.php](src/Translator.php#L272-L274) ## 与类型系统的协同 SSA 类型优化直接消费 [类型检查与兼容](type-check) 的判定结果——一旦推导确认某变量是固定原生类型,生成器即可发射 `php::Int` 而非通用 `php::Var`,省去 zval 装箱。这是「原生类型优先」原则在运行期的落地。 ## 相关阅读 - 类型如何判定 → [类型检查与兼容](type-check) - 编译期属性如何辅助优化 → [编译期属性](compile-time-attributes) - 整体速度瓶颈与改进 → [构建速度与性能](build-speed)