Анализ характеристик различных веб-фреймворков
Автор: Демчишин Юрий Владимирович
Журнал: Горные науки и технологии @gornye-nauki-tekhnologii
Статья в выпуске: 4, 2013 года.
Бесплатный доступ
Данная статья предоставляет обзор существующих технологий разработки веб-сайтов. Приведен количественный анализ производительности некоторых популярных фреймворков. Статья будет полезна при выборе технологии разработки веб-приложений на языке php.
Система управления контентом, фреймворк, производительность
Короткий адрес: https://sciup.org/140215734
IDR: 140215734
Текст научной статьи Анализ характеристик различных веб-фреймворков
В настоящее время существует большое количество технологий разработки веб-сайтов. Можно для разработки веб-сайта использовать готовую CMS (систему управления контентом), фреймворк или написать сайт с нуля. Каждый из этих трех подходов к разработке используется в своих случаях.
CMS предоставляет определенный набор функциональных возможностей и позволяет управлять текстовым и графическим наполнением веб-сайта, предоставляя пользователю интерфейс для работы с содержимым сайта, удобные инструменты хранения и публикации информации, автоматизируя процессы размещения информации в базах данных и её выдачи в HTML [1]. Большинство существующих CMS легко настраиваются и не требуют участия программиста. Для создания вебсайта с использованием CMS, напр., Joomla, Wordpress, Drupal, Typo3, обычно достаточно только знаний HTML и CSS. Однако при необходимости создания функционала, не входящего в стандартный перечень возможностей CMS, требуется участие профессионального программиста.
Создание сайта с использованием фреймворка возможно только с участием веб-программиста. Фреймворк - каркас будущего сайта, состоящий из набора библиотек и минимальных правил их взаимодействия. С одной стороны, фреймворки представляют максимальную гибкость при создании веб-сайта, с другой - недостатком фреймворков является недостаточное количество готовой функциональности, которая частично решается также за счет дополнительных библиотек и модулей сторонних разработчиков. При выборе фреймворка стоит обращать внимание на такие факторы, как размер фреймворка. Если фреймворк слишком велик и не имеет легко разделяемой модульной архитектуры, это может неоправданно утяжелить приложение. Отсутствие легко разделяемой модульной архитектуры может также отрицательно сказаться на скорости разработки веб-приложения и его дальнейшей модификации. «Компактность» фреймворка может вступить в противоречие с широтой возможностей, которые он предоставляет [2, 3, 4]. Одной из важных характеристик фреймворка является его производительность. Она может косвенно зависеть от размера. В работах [5, 6] приведены полученные в результате эксперимента значения сравнительных характеристик фреймворков Yii, Kohana, CodeIgniter, CakePHP [7], Symphony (табл. 1).
Результаты тестирования фреймворков.
Таблица 1.
Параметр |
Yii 1.1.12 |
Kohana 3.2.2 |
CodeIgniter 2.1.2 |
CakePHP 2.2.2 |
Symfony 2.1.1 |
Zend Framework 2.0 |
Легкость создания |
5 |
5 |
4 |
3 |
3 |
4 |
Объектная модель |
5- |
5- |
3- |
5- |
5- |
5 |
Память |
4718592 |
2359296 |
3407882 |
5545632 |
6029312 |
6153215 |
Скорость |
5 |
5 |
5- |
4 |
4- |
4- |
Роутинг |
5 |
5- |
5- |
3 |
5 |
4 |
Удобство |
5 |
4 |
4 |
3 |
4 |
4 |
Для оценки производительности использовалась элементарная конструкция . Проект включает в себя 1 контроллер, 1 модель, 1 представление, 1 роут. Модель загружается из базы средствами ORM. Поскольку во всех фреймворках скорость выполнения тестового проекта высока, для оценки использовались результаты apache benchmark (ab -n 1000 -c 5 http://test.dev/ ) на loopback-интерфейсе (127.0.0.1). Настройки всех фреймворков “по умолчанию”. Кэширование во всех проектах было отключено.
Опытным путем выяснилось, что метрики, полученные в процессе тестирования коррелируют между собой для каждого фреймворка. Поэтому, для простого сравнения производительности нет смысла собирать и анализировать все метрики, а достаточно одной. В нашем случае это — «requests per second» (rps) — количество обработанных запросов в секунду.
Результаты оценки количества обработанных запросов в секунду приведены в табл. 2 и показаны на рис. 1.
Результаты оценки количества обработанных запросов в секунду для различных фреймворков.
Фреймворк |
rps |
Zend Framework 2.0 |
1 |
CakePHP 2.2.2 |
2 |
Symfony 2.1.1 |
53 |
Zend Framework 1.12 |
466 |
Kohana 3.2.2 |
885 |
Yii 1.1.12 |
894 |
CodeIgniter 2.1.2 |
1226 |

Рис. 1. Диаграмма производительности фреймворков.
Из приведенных данных видно, что самым производительным фреймворком оказался CodeIgniter. Однако он проигрывает другим фреймворкам по другим критериям, приведенным в табл. 1.
Список литературы Анализ характеристик различных веб-фреймворков
- Методы и технологии реинжиниринга ИС. К.В. Ахтырченко, Т.П. Сорокваша. -Институт системного программирования РАН.
- Martin Brampton PHP5 CMS Framework Development. -PACKT publishing, June 2008. -328 p. -ISBN 978-1-847193-57-5
- Денис Баженов Теория разработки framework-систем//PHP Inside. -phpclub.ru, 2004. -№ 9. -С. 5-18.
- Денис Баженов Каркасы, каркасы, каркасы…//PHP Inside. -phpclub.ru, 2005. -№ 11. -С. 5-11.
- Тестирование производительности PHP-фреймворков. -Интернет-источник: http://habrahabr.ru/sandbox/48275/
- PHP фреймворки: сравнение Yii, Kohana (KO3), CodeIgniter (CI), OnPHP, Symfony2. -Интернет-источник: http://baron.su/archives/272-PHP_frejmvorki_sravnenie_Yii,_Kohana_KO3,_CodeIgniter_CI,_OnPHP,_Symfony2.html
- Cake Software Foundation, Inc. Basic Features. CakePHP: the rapid development php framework. [Online] [Citat: den 28 05 2010.] -Интернет-источник: http://cakephp.org/pages/features