Какво е TypePHP?
TypePHP е Ahead-of-Time (AOT) компилатор, разработен от екипа на Swoole. Той превежда PHP изходен код в C++17, който след това се компилира в нативен машинен код, изпълняван директно от CPU. За разлика от bytecode кеш или JIT, TypePHP не интерпретира opcodes по време на изпълнение — компилацията приключва преди стартиране на програмата.
Бенчмарк: Колко по-бърз?
Официалните PHP бенчмаркове (bench.php и micro_bench.php), компилирани с -O3:
- bench.php: PHP 5.034 s → TypePHP 0.603 s — приблизително 8 пъти по-бързо
- micro_bench.php: PHP 13.045 s → TypePHP 2.021 s — приблизително 6.5 пъти по-бързо
При масиви: std::array (TypePHP AOT) е около 10 пъти по-бърз от PHP масиви (дори с JIT) и е на нивото на C++ std::vector.
Три режима на компилация
- bin (по подразбиране): Самостоятелен нативен изпълним файл — не изисква PHP CLI по време на изпълнение
- ext: Зареждаемо PHP разширение
- lib: Споделена библиотека
Основни характеристики
- Нативна типова система:
int,float,boolсе отразяват директно към C++ скаларни типове. - Строго типизирани контейнери:
std::vector,std::map— до 10× по-бързи от PHP масиви. - Смесен C++/PHP: Критични изчисления в C++, извиквани от PHP.
- Защита на изходния код: Доставяйте нативни binaries вместо четими PHP файлове.
Ограничения
Не всички PHP функции се поддържат. Глобален обхват само за декларации; изпълнимият код трябва да е в функции. Съществуващи големи PHP приложения не могат да се компилират директно.
Хостинг за PHP приложения в ЕС? Нашите cloud сървъри и хостинг пакети.
Как се различава TypePHP от PHP JIT?
PHP JIT оптимизира часто изпълнявани кодови пътища по време на изпълнение и работи в рамките на Zend VM. TypePHP компилира предварително — по време на изпълнение няма интерпретатор или PHP VM. Резултатът е много по-предвидима и детерминистична производителност.
Мога ли да компилирам съществуващо Laravel приложение с TypePHP?
Все още не. TypePHP не поддържа пълния набор от динамични PHP функции. Bootstrap слоят на Laravel влиза в конфликт с тези ограничения. Целевата аудитория днес са нови, статично структурирани проекти и CLI инструменти.