Лекция
Привет, сегодня поговорим про сравнение производительности php фреймворков , обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое сравнение производительности php фреймворков , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend) .
Case
Проверьте вывод простой страницы "Hello World", Простая логика MVC (Router -> Controller -> Viewer), Нет соединений с базой данных, Нет сложной логики.
Hardware platform
CPU: Intel Core i5 750 (2.67GHz x4)
RAM: 4GB
Software Environment
Debian 6.0.4 x86_64 (2.6.32-41)
apache 2.2.16 (mpm-prefork,mod-php5)
php 5.3.10
php-apc 3.1.9 (Optimization for include/require)
Copy all projects to /dev/shm/* (Optimization for files read/write)
Frameworks list
* zf: Zend Framework
Site: http://framework.zend.com
Ver: 1.11.11
* zf2: Zend Framework
Site: http://framework.zend.com
Site: https://github.com/zendframework/ZendSkeletonApplication
Ver: 2.0.0-beta1
* symfony: symfony
Site: http://www.symfony-project.org
Ver: 2.0.0
* cakephp: CakePHP
Site: http://cakephp.org
Ver: 2.0.4
* ci: CodeIgniter
Site: http://codeigniter.com
Ver: 2.1.0
* yii: Yii Framework
Site: http://www.yiiframework.com
Ver: 1.1.8
* micromvc4: MicroMVC
Site: http://www.micromvc.com
Ver: 4.0.0
* laravel: Laravel, A PHP Framework For Web Artisans
Site: http://laravel.com
Ver: 2.0.2
* slim: Slim Framework
Site: http://www.slimframework.com
Ver: 1.5.0
* yaf: Yet Another Framework in PHP Extension
Site: http://code.google.com/p/yafphp
Ver: 2.1.3-beta (yaf.cache_config=1)
* FuelPHP: Simple, Flexible, Community driven Web Framework
Site: http://fuelphp.com/
Ver: 1.1
* ColaPHP:
Site: http://code.google.com/p/colaphp/
Ver: 1.2-ga
# XHProf: A Hierarchical Profiler for PHP
Site: http://pecl.php.net/xhprof
Ver: 0.9.2
# The source code of this testing:
Source: https://github.com/eryx/php-framework-benchmark
1. Apache Benchmark
Запросов в секунду (-c 100 -n 30000), чем больше, тем лучше
Запросов в секунду секунду (-c 200 -n 50000), чем больше, тем лучше
2. System LoadAvg
System LoadAvg за 1 минуту после завершения теста Apache, чем меньше, тем лучше (-c 100 -n 30000)
3. Memory usage
Сколько памяти используется на одной странице "hello world". чем меньше, тем лучше.
4. Response time
Время ответа страницы после запроса чем меньше, тем лучше.
5. Number of function calls (Facebook XHProf)
Количество вызовов функций на одной странице "hello world" .
В общих чертах, пропускная способность - это максимальная скорость производства или максимальная скорость, с которой что-либо может быть обработано.
Применяя это к нашей ситуации, эта характеристика измеряется количеством запросов, которые наша структура может обработать за секунду. Следовательно, чем выше это число, тем продуктивнее наше приложение, поскольку оно способно правильно обрабатывать запросы большого количества пользователей.
Для новых версий фремворков лидеры немного изменились:
Количество запросов в секунду различными фремворками при использовании PHP 5.6
Количество запросов в секунду различными фремворками при PHP 7.0
Количество запросов в секунду различными фремворками при исползовани PHP 7.1
Сводная диаграмма количество запросов в секунду различными фремворками при использовании различных версий PHP
Эта характеристика (в МБ - мегабайтах) отвечает за максимальный объем памяти, используемый платформой для выполнения порученной ей задачи, поэтому, чем меньше это число, тем лучше для нас и для сервера:
Количество занимаемой памяти одного процесса различными фремворками при использовании PHP 5.6
Количество занимаемой памяти одного процесса различными фремворками при использовании PHP 7.0
Количество занимаемой памяти одного процесса различными фремворками при использовании PHP 7.1
Количество занимаемой памяти одного процесса различными фремворками при использовании
Сводная схема хранения (по фреймворкам)
Время выполнения - это время, которое требуется системе для выполнения задачи. Об этом говорит сайт https://intellect.icu . Время отсчитывается от начала выполнения задачи до момента выдачи системой результата.
Вычислить это довольно просто. Мы выяснили, сколько запросов в секунду может обработать фреймворк и сколько памяти это занимает. Теперь посмотрим, сколько времени потребуется, чтобы получить ответ от сервера. Опять же, логично, что чем ниже это значение, тем лучше для нас и для нервной системы клиента нашего приложения.
Вы можете увидеть сравнительную таблицу времени выполнения запроса на разных фреймворках при использовании разных версий PHP. Время указывается в миллисекундах (мс).
PHP 5.6
PHP 7.0
PHP 7.1
Сводная схема хранения (по фреймворкам)
Symfony2 | Zend Framework 1.11.1 | ||
Zend Framework 2.0.0-beta1 | CakePHP 2.0.4 | ||
CodeIgniter 2.1.0 | Yii Framework 1.1.8 | ||
Slim 1.5 | Laravel 2.0.2 | ||
MicroMVC 4.0.0 | Yaf 2.1.3-beta | ||
FuelPHP 1.1 | ColaPHP 1.2 |
6. Number of Files
Эта характеристика отвечает за количество включаемых файлов, которые описаны в файловой «точке входа» фреймворка. Понятно, что система тратит какое-то время на поиск и подключение. Следовательно, чем меньше количество файлов, тем быстрее будет запущено приложение в первый раз. Обычно в следующий раз фреймворк работает с кешем, что ускоряет работу:
Разница между Laravel 5.3 и Laravel 5.4 в количестве включаемых файлов может показаться странной и вызвать дискуссии и споры. Спешим прояснить ситуацию. Как известно, спасибо команде - Php artisan optimize - force.
В Laravel 5.3 вы можете сгенерировать файл compiled.php , тем самым уменьшив количество подключенных файлов, собрав их в один. Но есть одно исключение - команды для создания этого файла в Laravel 5.4 больше нет. Разработчик решил удалить эту функцию, поскольку считает правильным использовать opcache для настройки производительности.
Количество файлов, подключенных или необходимых на одной странице «Привет мир». чем меньше, тем лучше.
Этого и следовало ожидать - безоговорочным лидером по производительности (но не по скорости разработки) является Phalcon. Второе место, но, по сути, первое место среди PHP-фреймворков (но не C, на котором написан исходный код Phalcon) занимает CodeIgniter 3!
Конечно, не забывайте, что у каждого инструмента свое предназначение. Если вы выберете небольшой и легкий фреймворк и собираетесь писать что-то отличное от простейших приложений или REST API, используя его, то вы, вероятно, столкнетесь с проблемами при расширении функциональности, и наоборот - избыточностью полнофункциональных, большие фреймворки повлекут за собой финансовые затраты на размещение контента даже для элементарных приложений при большой нагрузке.
Это тестирование было направлено на то, чтобы убедить / рассказать / укрепить позицию языка PHP версий 7.0 и 7.1 в вашем сознании, а также, что касается будущих проектов, представить информацию о том, что производительность действительно увеличивается с помощью таблиц и графиков.
Надеюсь, эта статья про сравнение производительности php фреймворков , была вам полезна, счастья и удачи в ваших начинаниях! Надеюсь, что теперь ты понял что такое сравнение производительности php фреймворков и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)
Из статьи мы узнали кратко, но содержательно про сравнение производительности php фреймворков
Комментарии
Оставить комментарий
Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)
Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)