TypePHP 编译器 https://swoole.com/aot/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

2.0 KiB

优化器

TypePHP 在语义分析阶段运行一组 SSA(静态单赋值)驱动的优化器,目标是减少运行时开销与生成的 C++ 体积。优化入口与 SSA 构建分别在 src/Optimizer/src/Analysis/SsaBuilder.php

Sources: src/Optimizer/ · src/Analysis/SsaBuilder.php

优化器清单

作用
SsaBuilder 构建 SSA 形式,为下游优化提供定义-使用链
SsaTypeOptimizer 基于 SSA 的类型推导,传播确定类型以去除运行时 php::Var 装箱
SsaPropOptimizer 属性类型的 SSA 推导与去虚化
FuncCallOptimizer 函数调用优化(内联候选、已知函数特化等)
LoopVarOptimizer 循环变量类型/作用域优化

Sources: src/Optimizer/SsaTypeOptimizer.php · src/Optimizer/SsaPropOptimizer.php · src/Optimizer/FuncCallOptimizer.php · src/Optimizer/LoopVarOptimizer.php

与优化级别的关系

命令行 -O <level>(0–3)控制优化强度:级别越高,优化器介入越深、生成代码越紧凑,但编译期耗时也越大;-d/--debug 会关闭优化并加调试符号。

Sources: src/Translator.php · src/Translator.php

与类型系统的协同

SSA 类型优化直接消费 类型检查与兼容 的判定结果——一旦推导确认某变量是固定原生类型,生成器即可发射 php::Int 而非通用 php::Var,省去 zval 装箱。这是「原生类型优先」原则在运行期的落地。

相关阅读