Как стать автором
Обновить

Kohana vs Codeigniter, Синтетика производительности

Время на прочтение 2 мин
Количество просмотров 1.1K
Я хочу привести сравнение производительности двух удивительных (и, по моему скромному мнению, восхитительных) фреймворков, Kohana и Codeigniter. Тест синтетический, но, как мне кажется, все-таки интересный.

Условия тестирования


В обоих фреймворках я не использовал view, а только работу внутри контроллеров. БД: Postgresql 8.3 на localhost. Оба контроллера имеют простейший вид.
В первом тесте был простой цикл в 333 итерации, внутри которого запускалось обращение к БД по следующему запросу:
SELECT *
FROM tbl_clients
JOIN tbl_clients_recvisites ON tbl_clients.clientid = tbl_clients_recvisites.clientid
JOIN tbl_recvisites ON tbl_clients_recvisites.recvisiteid = tbl_recvisites.recvisiteid
JOIN tbl_clients_contacts ON tbl_clients.clientid = tbl_clients_contacts.clientid
JOIN tbl_contacts ON tbl_clients_contacts.contactid = tbl_contacts.contactid


* This source code was highlighted with Source Code Highlighter.

Дополнительно был включен встроенный в оба контроллера профайлер.
Во втором тесте использовался Apache JMeter

Тест первый — чистая синтетика без эмуляции


На каждом из фреймворков я повторял действия 10 раз (10 раз [F5]) и записывал результаты выполнения приложения (не учитывается время доставки — только работа PHP). Результаты в таблице:
  Codeigniter Kohana
1 26,6959 14,808
2 26,6049 14,178
3 27,5487 14,289
4 26,7427 13,845
5 26,6099 14,554
6 26,5644 14,381
7 26,9622 13,717
8 26,8828 14,242
9 27,2445 13,771
10 26,8514 14,479
Среднее 26,87 14,23

И еще. Важное замечание: Codeigniter потреблял в этом тесте 1,74Мб оперативки, а Kohana — 1,35Мб

Тест второй — приближение к реальности


В этом тесте использовался JMeter для симуляции одновременных запросов.
Заключался тест в следующем. На каждый из испытуемых (CI и KOH) отправлялось по 10 одновременных потоков по 5 запросов в каждом (в потоке они будут выполняться по очереди), но, чтобы не «убивать» стенд, количество запросов к БД было уменьшено с 333 до 9 (ну да, люблю я цифру 3 ;))
В первом случае фреймворки отдавали данные профайлера, но они оказались различными по объему передаваемых байт, поэтому вторую серию тестов я провел, когда оба фреймворка отдавали только по 2 байта ('ok') после выполненной работы. Каждый тест запускался в JMeter по 3 раза.
Таблицы итогов:
Codeigniter 9 запросов профайлер включен
Среднее (мс) Мин. (мс) Макс. (мс) Пропускная способность (запросов/сек) Кб/сек
3880 2492 4370 2,5 57,17
3729 2538 4105 2,6 59,5
3760 2608 4263 2,6 59,04

Kohana 9 запросов профайлер включен
Среднее (мс) Мин. (мс) Макс. (мс) Пропускная способность (запросов/сек) Кб/сек
2495 1104 2990 3,9 27,62
2462 1239 2873 3,9 27,89
2485 933 2955 3,9 27,68

Codeigniter 9 запросов, вывод'ok'
Среднее (мс) Мин. (мс) Макс. (мс) Пропускная способность (запросов/сек) Кб/сек
3749 2778 4241 2,6 0,01
3691 2187 4111 2,6 0,01
3776 3041 4208 2,6 0,01

Kohana 9 запросов, вывод'ok'
Среднее (мс) Мин. (мс) Макс. (мс) Пропускная способность (запросов/сек) Кб/сек
2451 1035 2870 3,9 0,01
2445 997 2924 3,9 0,01
2448 1266 2883 3,9 0,01

Как видно из этих таблиц, количество отдаваемых байт на время работы приложений не сказывался никак.

Выводы


Выводы делает каждый для себя сам, я лишь просто решил провести тестирование таких похожих, но в то же время различных фреймворков. Для себя я, кажется, его сделал.
Ни в коем случае не забывайте, что для каждой работы есть самый подходящий для нее инструмент...
Теги:
Хабы:
+11
Комментарии 8
Комментарии Комментарии 8

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн