Порівняння швидкодії PHP-фреймворків
Недавно переді мною постало питання вибору PHP-фреймворку для великого проекту, в якому буде дуже багато логіки, складна архітектура і потенційно величезна кількість відвідувачів. Основними критеріями вибору стали: продуктивність, функціонал, гнучкість, зручність розробки, документація та спільнота. Отож, який із сучасних PHP-фреймворків варто обрати?
Постановка завдання
Більшість проектів наша команда розробляла з використанням Zend Framework. Як на мене, то це дуже хороший фреймворк, досить зручний і гнучкий, з академічно правильною архітектурою, величезним функціоналом і спільнотою. Але у нього є великі проблеми з продуктивністю — навіть якщо в процесі оптимізації працюючої системи звести на мінімум використання його компонентів, то від «ядра» (MVC, бутстраппінг і т.д.) нікуди не дінешся. У сильно навантаженій системі це буде дуже відчутно, адже навіть на просту сторінку з «Hello World» Zend Framework 1.x робить більше 1500 викликів функцій і «від’їдає» 2,5 МБ пам’яті на один запит. У Zend Framework 2.0 справи йдуть ще гірше (приблизно в 2 рази). Тому було вирішено використовувати інший фреймворк. Він повинен мати набагато більшу продуктивність, щоб цим самим аргументувати перехід на нього.Тестування продуктивності
Щоб порівняти продуктивність саме «ядер» фреймворків, тестування проводилося кілька разів на простих «Hello World» додатках з відключеним кешуванням. Параметри тестової машини:- Залізо: Intel Core i3-2330M, 8GB DDR3, SSD SATA3;
- Софт: Ubuntu 12.04 LTS, Apache 2.2, PHP 5.3 (всі налаштування дефолтні);
ab -n 1000 -c 5 http://test.dev/Протестовані фреймворки:
- Zend Framework 2.0 — http://framework.zend.com/
- CakePHP 2.2.2 — http://cakephp.org/
- Symfony 2.1.1 — http://symfony.com/
- Zend Framework 1.12 — http://framework.zend.com/
- Silex — http://silex.sensiolabs.org/
- Laravel 3.2.7 — http://laravel.com/
- Kohana 3.2.2 — http://kohanaframework.org/
- Yii 1.1.12 — http://www.yiiframework.com/
- FatFree 2.0.7 — http://bcosca.github.com/fatfree/
- CodeIgniter 2.1.2 — http://codeigniter.com/
- Phalcon 0.4.5 — http://phalconphp.com/
- Yaf 2.1 — http://www.laruence.com/yaf/
<?php echo 'Hello World'; ?>.
≈ 7500 rps
Отже, результати тестування фреймворків:Zend Framework 2.0 | 1 rps |
CakePHP 2.2.2 | 1 rps |
Symfony 2.1.1 | 54 rps |
Zend Framework 1.12 | 466 rps |
Silex | 494 rps |
Laravel 3.2.7 | 533 rps |
Kohana 3.2.2 | 885 rps |
Yii 1.1.12 | 894 rps |
FatFree 2.0.7 | 925 rps |
CodeIgniter 2.1.2 | 1226 rps |
Phalcon 0.4.5 | 2253 rps |
Yaf 2.1 | 2545 rps |
Підсумки
Після ознайомлення з можливостями і за підсумками тестування найбільш підходящим став саме Phalcon. Він написаний на С як PHP extension, тому дуже продуктивний. У нього непоганий функціонал — реалізована MVC модель, ACL, кешування, обгортка над CLI, конфіги, ORM, dependency injection, event-driven архітектура, фільтри, flash повідомлення, обгортка над HTTP (request і response), autoloader, логування, paginator, обгортка над сесіями, генератор HTML тегів, багатомовність і т.д. До того ж, проект дуже активно розвивається.
Додатки написані з використанням Phalcon за своєю структурою дуже нагадують проекти на Zend Framework, так що перехід команди на Phalcon буде не сильно болючим. Зрештою вибір зупинився саме на цьому фреймворку, так як він задовольняє всі вище викладені вимоги.
Коментарі
Дописати коментар