
TypePHP 编译器是 Swoole 推出的原生编译工具,将 PHP 源码翻译为 C++ 代码后再编译为原生机器码,在完整保留 PHP 开发效率与语法体验的前提下,彻底消除解释执行开销,将 PHP 带入原生性能区间。
并非字节码/中间码方案,PHP 源码完整翻译为 C++ 后,经由 GCC/Clang/MSVC 编译为纯原生机器码,程序启动直接执行,无解释器、虚拟机 overhead。
通过 use native_types 语法启用原生 int/float/bool 类型,彻底消除 zval 结构体开销;密集计算场景官方标称最高 150 倍性能提升。
原生支持三种高精度类型,直接覆盖金融、科学计算等专业场景:
支持直接内联 C++ 代码,无需 FFI 即可调用各类 C/C++ 库,PHP 与 C++ 类型自动映射、无缝互通。
同一套 PHP 源码,可编译为三大主流平台的原生可执行文件:
编译阶段即可完成类型错误、未定义函数、参数数量不匹配等问题的检测,提前拦截异常,避免运行时崩溃。
完整编译链路:PHP 源码 → C++ 代码 → 目标文件(Object File) → 原生二进制
declare(strict_types=1);
use native_types;
function fib(int $n): int{
if ($n <= 1) return $n;
return fib($n - 1) + fib($n - 2);
}
function main(): void{
echo fib(40);
}
#include <phpx.h>
#include <phpx_helper.h>
php::Int fib(php::Int n){
if (n <= 1) return n;
return fib(n - 1) + fib(n - 2);
}
void main(){
php::echo(fib(40));
}
测试环境:PHP 8.4 ZendVM 对比 AOT 编译器(-O3 优化等级)
测试场景 | PHP 8.4 (ZendVM) | AOT 编译器 (-O3) | 性能提升 |
|---|---|---|---|
fib(40) 斐波那契递归 | 14.82s | 0.11s | ~135 倍 |
PI 值计算(1亿次迭代) | 6.52s | 0.094s | ~69 倍 |
cd vendor/swoole/phpx && cmake . && make -j$(nproc)
# -O2 指定优化等级,-o 指定输出文件名
./swoole_compiler hello.php -O2 -o hello
./hello
官方文档:https://swoole.com/aot[1]