TypePHP: AOT компилаторът, превеждащ PHP в нативен машинен код

TypePHP: AOT компилаторът, превеждащ PHP в нативен машинен код
Блог 1 мин. четене
TypePHP е Ahead-of-Time компилатор от екипа на Swoole, превеждащ PHP изходен код чрез C++17 в нативен машинен код. Бенчмарковете показват 6-8× по-бързо изпълнение.

Какво е 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 инструменти.

TypePHP AOT компилатор Swoole PHP нативен PHP производителност

EuroVDC

Хоствайте уебсайта си надеждно

NVMe SSD · Безплатен SSL · cPanel включен

Разгледайте хостинг плановете

Намерихте ли това съдържание за полезно?

Хората го намериха за полезно

Сподели в социалните мрежи

TypePHP: AOT компилаторът, превеждащ PHP в нативен машинен код