Производительность фреймворков — CodeIgniter уходит в отрыв
Хуан Бассо протестировал несколько современных версий популярных PHP-фреймворков. Увы, оба два моих предпочитаемых: CakePHP и ZendFramework слили CodeIgniter’у по полной программе. В лидерах оказался и неизвестный мне Yii.
Автор тестировал производительность 3-х приложений: стандартного ‘Hello, world’, запрос к базе данных на выборку 10 записей и запрос на выборку 1000 записей. Для тестирования использовался, как я понял, массовый бразильский сервер: Debian, PHP 5.2.0, MySQL 5.0, Apache 2.2.3, процессор Xeon 2.66G и 256 мегабайт оперативки. Всяческие хитрости типа Memcache были отключены и не использовались, все приложения запускались, как принято говорить, в production режиме, т.е. с отключенной отладочной информацией и тому подобное.
Тестовые приложения для каждого фреймворка были разработаны на основе документации, а не взяты из готовых примеров. Это, конечно, может наложить некоторый отпечаток, поскольку вряд-ли Хуан одинаково хорошо разбирается во всех пакетах, зато такой подход наглядно демонстрирует то, что можно получить, если завтра принять решение о смене фреймворка. :-)
В тесте принимали участие самые свежие версии:
- CakePHP 1.1.20 — самый свежий релиз версии 1.1
- CakePHP 1.2 RC4 — недавно вышедший наипоследнийший Release Candidate
- CodeIgniter 1.7.0
- Symfony 1.2.1
- Yii 1.0.0
- ZendFramework 1.7.2
Для тестирования использовалась стандартная апачевская утилита ab, измерялось общее количество обработанных запросов за 30 секунд работы. Испытание выполнялось для каждого приложения в двух режимах: с 10 одновременными запросами и со 100 одновременными запросами. т.е. «ab -c 30 -t 10″ и «ab -c 30 -t 100″.
Тест первый: Hello, world!. По горизонтали — количество успешно обработанных запросов.

Производительность приложения Hello, world!
CI и Yii очень быстро обрабатывают обращения к сайту. Диспетчеризация, роутинг, подгрузка нужных контроллера и вида. Что касается ZF — я не удивлен, с его обширной файловой системой и количеством файлов это немудрено. Там за один include системе приходится просмотреть пару десятков, а то и больше, директорий. Cake — вот кто удивил. Возможно, время тратится на всяческие преобразования Inflector’ом и обработку умолчаний. Отговорки о том, что CkePHP совместим с PHP4 не помогут. CodeIgniter тоже поддерживает PHP4.
Тест второй: 10 запросов к базе данных

10 запросов к базе данных
Здесь отрыв немного сократился, но все равно, лидеры вдвое опережают остальных. Обратите внимание, что производительность практически не меняется в зависимости от нагрузки. Что 10 человек одновременно, что 100. CodeIgniter так даже улучшил производительность при большей нагрузке. Здесь, конечно, сказывается кэширование самого MySQL, если 100 человек одновременно будут открывать разные страницы и генерировать разные запросы к БД, то картина вполне может и поменяться.
Тест третий: 1000 запросов к базе данных. Тест достаточно искусственный, выборка 1000 записей для генерации одной страницы чрезвычайно редкое явление. Этим тестом Хуан решил подтвердить тезис о том, что у всех фреймворков очень большие накладные расходы на обслуживание запросов: составление, выборку результатов, превращение результатов в структуры и т.д. Странно, что ему памяти на машине хватило. Cake, например, выбирает все результаты сразу.

1000 запросов к базе данных
CodeIgniter подтвердил свое лидерство. Но вот, что интересно: ZF практически не сдвинулся с места! Все верно, в ZF можно выбирать результаты построчно. CakePHP, по сравнению с ZF, просел прилично, но все-таки у 1.2 RC4 потеря производительности, относительно теста с 10 запросами, меньше, чем у предыдущей версии 1.1.20. Это вселяет некоторую надежду.
Результаты тестов доступны отдельно здесь.
Рубрики: CakePHP · Теги: codeigniter, symfony, yii, zendframework, zf, производительность, сравнение, тест
-
evilbloodydemon
-
evilbloodydemon
-
sokol
-
sokol
-
http://andrey.opeykin.ru/ xoma
-
http://andrey.opeykin.ru xoma
-
http://ouch.kiev.ua/ Влад
-
http://ouch.kiev.ua Влад
-
гость
-
гость
-
Zh0rzh
-
Zh0rzh
-
http://coder-life.ru/symfony-vs-codeigniter/ Кодер-лайф.ру » Архив блога » Symfony vs CodeIgniter
-
KOT
-
http://juravskiy.ru Vitaliy
-
scanner85

