В процессе работы над нашим приложением, некоторые, ненужные сложности в разработке большого приложения заставили задуматься в целесообразности использования php. Собственно поэтому я посматриваю на языки-фреймворки, на которые максимально безболезненно сможет перейти команда php программистов.
Сразу скажу что php язык хороший, и написать на нем можно всё, но не всё можно написать одинаково хорошо, быстро, и без лишних проблем в перспективе развития проекта. Т.е. для домашней странички-форума-блога, — да, шикарное решение, а для разработки сложного корпоративного софта, с большим количеством частоизменяющихся бизнес требований, веб приложений под нагрузками, как мне кажется, можно найти более подходящий инструмент. Конечно, идеально использование java/.net, но поскольку не все проекты у нас большие, а технологии эти довольно тяжелы для «подъёма» в эту сторону пока смотреть не хочется. В этом цвете мне и приглянулся haxe. С одной стороны — шикарный язык, в лучших традициях java/c#, с другой, — не перегруженный, простой для понимания и освоения php программистами. Главная идея haxe, — это различные платформы на выходе: c++, neko, javascript, php, flash, что дает массу гибкости и при хорошо организованной архитектуре позволит безболезненно переводить уже написанное приложение с платформы на платформу, в зависимости от нужд. Со списком преимуществ haxe можно познакомится здесь. Это в теории, на практике, конечно же нужно что-то делать с платформозависимыми библиотеками, либо писать заведомо ограниченные приложения.
Ну чтож, перейдем к самому интересному, — бенчмаркам. Ничего особо сложного тестировать я не хотел, написал простой тест, который включает в себя создание локальных переменных, простейшие операции, циклы, сравнения. Это то что мы чаще всего пишем в коде. Мне было интересно сравинить скорость выполнения чистого php, разницы в скорости вызовов функций перед статическими методами класса, разницы выполнения в консоли и через модуль apache, haxe кода скомпилированного в php и производительности nekovm.
Вот что получилось:
10000 циклов | 20000 циклов | |
pure php console | 0.724 | 1.433 |
pure php apache | 0.747 | 1.708 |
php with class console | 0.867 | 1.733 |
php with class apache | 0.862 | 1.731 |
hexephp (-debug) | 4.91 | 9.816 |
haxephp | 0.887 | 1.73 |
nekovm (mod_neko2) | 0.013 | 0.097 |
pure neko | 0.011 | 0.027 |
Выводы: скомпилированный php код не намного уступает обычному php коду. Вполне очевидно что код nekovm выполняется быстрее чем php, благодаря строгой типизации и прочим фичам. Разница в выполнении из консоли или через апач видна только в nekovm, из-за того что скорость выполнения значительно выше чем php. Несмотря на то что haxe платформа довольно молодая, перспективы у неё огромные. Возможность относительно легко мигрировать приложеня с php в nekovm мне кажется пока усложнена отсутствием высокопроизводительного движка шаблонов (в php с этим отлично справляется pure php), но уже сейчас стоит обратить внимание на такие возможности как SPOD (объектная работа с базой данных), многопоточное программирование, интеграция с кодом на C