Приветствую тебя, хабражитель! Разрабатывая FFCMS для своих проектов одной из основных своих целей я выделял быструю скорость работы и минимальное потребление ресурсов оборудования — однако все значения можно оценить лишь в сравнении, что я и постараюсь сделать в данной статье.
В прошлой моей публикации некоторые пользователи поинтересовались вопросом производительности системы и я решил провести тестирование различных популярных и молодых CMS по состоянию на 18 октября 2014 года. Хочется отметить — тестирование системы проводилось сразу же после ее установки и данные могут существенно измениться в ту или иную сторону в зависимости от периода использования системы — увеличения базы данных, количества файлов и прочие условия.
Предисловие
Перед проведением подобного тестирования я хотел посмотреть на результаты аналогичных тестов — ведь вероятней всего их уже проводили и до меня. Однако к моему разочарованию, мне не удалось найти ни единого развернутого тестирования, в котором бы сравнивались хотя-бы 3 или более систем по многим критериям (возможно я плохо искал?). Это удивительно, ведь популярными CMS пользуются десятки (а то и сотни) тысяч веб-мастеров, программистов и крупных компаний — неужели вопрос потребляемых ресурсов системой не интересует вовсе никого?
Объекты тестирования
Для тестирования я выбрал ряд популярных на данный момент систем, как коммерческих так и бесплатных. Были выбраны 10 систем, ниже приведены их названия и используемые версии:
- Bitrix standart — 14.5.0
- WordPress 4.0
- Drupal 7.32
- Joomla! 3.3.6
- Umi.cms 2.9.7
- FFCMS 2.0.3
- InstantCMS 2.1.1
- KodiCMS 12.20.37(master)
- NetCat Standart 5.4
- HostCMS.Халява 6.1.6
Для платных систем были выбраны демонстрационные версии, которые возможно загрузить на сайте создателей.
Методика тестирования
Для того, чтобы результат тестирования был однородным для всех продуктов была создана виртуальная машина, на которую был установлен веб сервер, база данных и прочее необходимое ПО для тестирования. В качестве стенда использовались:
- Apache 2.2.27;
- PHP 5.3.28;
- MySQL Community Server 5.5.38-log;
- Модули PHP: Zend Engine v2.3.0 (никаких opcache, xcache, acp, eaccelerator);
- Apache benchmark Version 2.3.
* UPD: так же был проведен второй тест на php 5.5 с включенным OPCache как запросили критики в комментариях — его результат пропорционален основному тесту. Результаты приведены в последнем разделе.
Каждая CMS была установлена в виртуальной среде стенда после чего в ее код (чаще всего index.php) было добавлено несколько строк, которые позволили сохранять результат о времени выполнения скрипта и объеме затраченной памяти:
$_test_loadstart = microtime(true);
// код CMS
$_test_loadend = microtime(true);
$_test_loadtime = number_format($_test_loadend - $_test_loadstart, 3);
$_test_memory = number_format(memory_get_usage()/1048576, 3);
file_put_contents($_SERVER['HTTP_HOST'] . '.txt', $_test_loadtime . ';' . $_test_memory . "\n", FILE_APPEND);
В результате на выходе был получен файл domain.local.txt в котором содержались данные о времени загрузки скрипта и потреблении оперативной памяти.
Для создания запросов на сайт был использован ab (Apache benchmark) без создания параллельных запросов — целью не было тестирование apache, целью было получить средние результаты для каждой CMS:
ab -n 1000 http://domain.local/ > ~/bench/ab/domain.local.txt
Методика оценки результатов
Всего по выше описанной технологии проведения тестирования была дана оценка по следующим разделам:
- Описательная оценка (Basic) — размер дистрибутива, кол-во файлов, размер и характеристики базы данных
- Оценка скорости загрузки скрипта (phpload_time)
- Оценка размера потребленной оперативной памяти (phpload_memory)
- Оценка результатов тестирования Apache benchmark (apache_benchmark)
В каждом разделе тестирования для каждой CMS были выставлены оценки (-2 <= x <= +2) в зависимости от полученных результатов (личных) и средних (avg) всей выборки:
- -2 — худший результат в данном тесте
- -1 — результат, худший чем среднее в данном тесте
- +0,5 — результат близкий к среднему в пределах standart devination
- +1 — результат, лучший чем среднее в данном тесте
- +2 — лучший результат в данном тесте
По результатам тестирования во всех категориях по всем критериям была составлена результирующая таблица, в которой указаны суммарные результаты по всем тестам.
* Хочется так же остановиться на 1 моменте — UMI.CMS при тестировании показывала запредельные результаты по скорости загрузки, поэтому ее результаты были исключены из расчета AVG в некоторых категориях тестирования.
Тестирование
Раз с материалом и методикой тестирования мы ознакомились — перейдем непосредственно к самому тестированию. Ниже предоставлены итоговые результаты по каждой из категорий тестирования.
Результаты тестирования в удобном формате: Google spreadsheet
Результаты для PHP 5.5 с OPCache (пропорциональны основным): Google spreadsheet.
Описательная оценка
Test/CMS | Bitrix |
Wordpress | Drupal | Joomla | Umi.CMS | FFCMS | InstantCMS | KodiCMS |
NetCat |
HostCMS | AVG | MIN | MAX |
Installed size(MB) | 191 | 18,5 | 11,7 | 20,1 | 105 | 18,9 | 11,9 | 23,4 | 98,4 | 17,5 | 51,64 | 11,7 | 191 |
File count | 29908 | 1175 | 1074 | 5267 | 7128 | 1682 | 1650 | 3009 | 6391 | 2919 | 6020,3 | 1074 | 29908 |
Mysql table count | 241 | 11 | 74 | 68 | 97 | 22 | 84 | 33 | 155 | 114 | 89,9 | 11 | 241 |
Mysql table rows | 21918 | 126 | 1421 | 461 | 14616 | 187 | 12587 | 46 | 31467 | 20302 | 10313,1 | 46 | 31467 |
Mysql database size(MB) | 11 | 0,56 | 4,6 | 3,9 | 6,2 | 0,356 | 6,8 | 0,948 | 2,7 | 1,9 | 3,8964 | 0,356 | 11 |
SUMMARY POINTS | -9 | 6 | 5 | 5,5 | -5 | 6 | 1 | 6 | -4 | 1 |
Оценка скорости загрузки скрипта
Test/CMS | Bitrix |
Wordpress | Drupal | Joomla | Umi.CMS | FFCMS | InstantCMS | KodiCMS |
NetCat |
HostCMS | AVG | MIN | MAX |
AVG loadtime (sec) |
0,50 | 0,497733 | 0,210623 | 0,325381 | 2,99 | 0,090089 | 0,548239 | 0,213725 | 0,3279 | 0,70523 | 0,38 | 0,09 | 0,71 |
MIN loadtime (sec) |
0,45 | 0,467 | 0,19 | 0,305 | 2,9 | 0,083 | 0,518 | 0,194 | 0,304 | 0,144 | 0,30 | 0,08 | 0,52 |
MAX loadtime (sec) |
0,69 | 0,661 | 0,317 | 0,489 | 3,218 | 0,135 | 0,851 | 1,387 | 2,076 | 0,91 | 0,83 | 0,14 | 2,08 |
SUMMARY POINTS | -1 | -1 | 3 | 2,5 | -6 | 6 | -2,5 | 1 | -4 | -2 |
Оценка размера потребленной оперативной памяти
Test/CMS | Bitrix |
Wordpress | Drupal | Joomla | Umi.CMS | FFCMS | InstantCMS | KodiCMS |
NetCat |
HostCMS | AVG | MIN | MAX |
AVG memory (mb) |
28,944115 | 22,992 | 18,144003 | 12,556 | 23,089791 | 3,181 | 5,953808 | 6,485019 | 13,696 | 10,789239 | 14,5830975 | 3,181 | 28,944115 |
MIN memory (mb) | 28,942 | 22,992 | 18,144 | 12,556 | 22,784 | 3,181 | 5,951 | 6,485 | 13,696 | 4,213 | 13,8944 | 3,181 | 28,942 |
MAX memory (mb) |
29,177 | 22,992 | 18,147 | 12,556 | 23,095 | 3,181 | 6,885 | 6,504 | 13,696 | 10,848 | 14,7081 | 3,181 | 29,177 |
SUMMARY POINTS | -6 | -3 | -3 | 3 | -3 | 6 | 3 | 3 | 3 | -1 |
Оценка Apache benchmarks
Test/CMS | Bitrix |
Wordpress | Drupal | Joomla | Umi.CMS | FFCMS | InstantCMS | KodiCMS |
NetCat |
HostCMS | AVG | MIN | MAX |
Time taken for tests (sec) | 527,433 | 520,498 | 230,91 | 340,219 | 13 032,86 | 97,178 | 555,886 | 224,176 | 343,965 | 727,217 | 396,3868889 | 97,178 | 727,217 |
Complete requests | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 | 1000 |
Failed requests | 965 | 0 | 0 | 0 | 697 | 0 | 0 | 0 | 0 | 955 | 213,3333333 | 0 | 965 |
Requests per second (#/sec) | 1,9 | 1,92 | 4,33 | 2,94 | 0,08 | 10,29 | 1,8 | 4,46 | 2,91 | 1,38 | 3,547777778 | 1,38 | 10,29 |
Time per request (ms) | 527,433 | 520,498 | 230,91 | 340,219 | 13032,857 | 97,178 | 555,886 | 224,176 | 343,965 | 727,217 | 396,3868889 | 97,178 | 727,217 |
Transfer rate | 69,51 | 14,9 | 32,99 | 28,61 | 2,28 | 105,48 | 92,36 | 13,33 | 31,74 | 23,98 | 45,87777778 | 13,33 | 105,48 |
SUMMARY POINTS | -4 | -2 | 4 | 2 | -12 | 10 | 0 | 4 | 2 | -6 |
Итоговые результаты
Test/CMS | Bitrix |
Wordpress | Drupal | Joomla | Umi.CMS | FFCMS | InstantCMS | KodiCMS |
NetCat |
HostCMS |
Basic | -9 | 6 | 5 | 5,5 | -5 | 6 | 1 | 6 | -4 | 1 |
phpload_time | -1 | -1 | 3 | 2,5 | -6 | 6 | -2,5 | 1 | -4 | -2 |
phpload_memory | -6 | -3 | -3 | 3 | -3 | 6 | 3 | 3 | 3 | -1 |
Apache benchmark | -4 | -2 | 4 | 2 | -12 | 10 | 0 | 4 | 2 | -6 |
SUMMARY RESULT |
-20 | 0 | +9 | +13 | -26 | +28 | +1,5 | +14 | -3 | -8 |
Итоги тестирования
Теперь пришло время подбить итоги нашего тестирования и вкратце оценить полученный результат. Все наши результаты — расположены от 0 в 2 стороны: те, что получили отрицательный результат я бы не рекомендовал никому использовать вовсе, если вы дорожите вычислительными ресурсами (это лишь мое личное мнение — я прекрасно понимаю что функциональные возможности таких систем могут быть на порядок выше, чем у других).
Одним из важных результатов тестирования стало так же то, что ни 1 открытая система не получила отрицательной оценки, а все коммерческие продукты оказались за данной чертой (+6 / -4 в пользу open source).
Другие выводы мне бы делать не хотелось я лишь предоставлю вам итоговые графики важных тестов, выводы делайте сами (все картинки кликабельны):
Послесловие
Я ни в коем случае не хотел никого обидеть — я лишь предоставил результаты субъективного тестирования различных CMS. Вы всегда в праве решать, имеет ли потребление ресурсов для вас большое значение, возможно большее, чем удобство разработки/управления сайтом.
Результаты в удобном формате: Google spreadsheet
Результаты для PHP 5.5 с OPCache (пропорциональны основным): Google spreadsheet
Тестирование в plain-text: Забрать с Яндекс.диска
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Важно ли для вас потребление ресурсов в Web'e?
17.68% Выбираю продукты с низким потреблением ресурсов90
17.29% Отдаю предпочтение большей функциональности88
52.06% Предпочитаю в меру сбалансированные системы265
12.97% Мне все равно — лишь бы сайт работал66
Проголосовали 509 пользователей. Воздержались 166 пользователей.