Сравнение количества кода популярных фреймворков

в 19:51, , рубрики: Kohana, php, symfony, yii, zend, метки: , , , ,

Привет. С каждым годом количество фреймворков увеличивается, появляются форки, некоторые становятся модными, а некоторые выходят из моды. Конечно разные фреймворки предоставляют разработчику разные возможности, которые прежде всего зависят от разработчиков, их идей, выбранной архитектуры, наличия документации… и конечно размера фреймворка. Вот об этом параметре мы и поговорим сегодня — всех заинтересованных попрошу под кат.

Посмотрим на вопрос с точки зрения новичка. Вот он уже изучил основы, что-то пишет на «нативном» php. Постепенно доходит до такого понятия, как «фреймворк». И вот он уже интересуетсяэтим вопросом, загуглил какие фреймворки самые популярные, у каких есть документация на русском, а у каких сообщество. Однако есть еще такой параметр как сложность или порог вхождения. И если он спросит совета на форуме, то ему скорее всего посоветуют Codeigniter или Kohana (реже Yii), нежели Zend Framework или Symfony. И это вполне логично и нормально.

Большой по объему фреймворк это хорошо или плохо? Что лучше: хорошее быстродействие или отличная архитектура и широкие возможности? Эти вопросы мы оставим для следующих статей, а сегодня посмотрим на самые маленькие и самые большие и объемные фреймворки. А считать мы будем количество строк и количество файлов.

В сети можно найти информацию о количестве строк того или иного фреймворка. Но данная информация показалась мне недостоверной и достаточно устаревшей (1-2 года я считаю большим промежутком в it отрасли), поэтому я решил путем подсчета сам получить эти данные. При этом возникает вопрос: что именно мы будем считать? Размышляя над этим вопросом, я пришел к выводу, что следует вести подсчет следующих параметров:

  • Количество строк и файлов во всем фреймворке
  • Количество php файлов и строк в них во всем фреймворке
  • Количество php файлов и строк в них во всем фреймворке исключая сторонние компоненты

Для этой цели был написан небольшой php скрипт, который рекурсивно получал все файлы в папке, открывал их и считал количество строчек. Также попутно сохраняем количество файлов.

В эксперименте приняли участие популярные фреймворки (если я забыл ваш любимый — напишите, добавлю) и несколько CMS/CMF для наглядности. При замерах использовались последние версии с сайтов разработчиков.

В итоге я получил следующие данные:

Объект исследования Полностью Только php файлы Только php файлы (без сторонних модулей)
Kohana 3.3.0      
файлов 1283  862 471 
строк 183228 119023 56874
Codeigniter 2.1.3      
файлов 352  147  147 
строк 88724 51525 51525
Yii 1.1.13      
файлов 2005  1621  1571 
строк 653970 614712 573114
Zend Framework 2.1.3      
файлов 2070  1963  1963 
строк 276248 272957 272957
Symfony 2.2.0      
файлов 5718  3583  2247 
строк 498788 418988 253408
CakePHP 2.3.0      
файлов 1012  654  654 
строк 251125 238350 238350
FuelPHP 1.5.2      
файлов 700  473  455 
строк 166730 96074 73118
Drupal 7.2.0      
файлов 1056  269  269 
строк 314574 150999 150999
Joomla 3.0.3      
файлов 4753 1651  1651 
строк 517145 303996 303996
WordPress 3.5.1      
файлов 1085  447  447 
строк 312529 192473 192473

А если найти примерное количество строк на один файл (при подсчетах использовались данные «только php файлы без сторонних компонентов»):

Объект исследования Строк/файл (в среднем)
Kohana 3.3.0 120,7515924
Codeigniter 2.1.3 350,5102041
Yii 1.1.13 364,8084023
Zend Framework 2.1.3 139,0509424
Symfony 2.2.0 112,776146
CakePHP 2.3.0 364,4495413
FuelPHP 1.5.2 160,6989011
Drupal 7.2.0 561,3345725
Joomla 3.0.3 184,128407
WordPress 3.5.1 430,5883669

Итак, давайте проанализируем данные. Самым большим (по количеству файлов) в стандартной поставке является фреймворк Symfony, а самым объемным — Yii. Самым лаконичным (меньше всего файлов) является Codeigniter.
По среднему количеству строк в файле фреймворки разделились на 2 группы: 110-160 строчек в файле (Kohana, Zend, Symfony, FuelPHP) и 300-500 строчек в файле (Codeigniter, Yii, CakePHP), а середнячков и нету. Скорее всего это связано с архитектурой и на данные значения очень серьезно воспринимать не стоит.

Что же касается CMS/CMF, то результаты очень ожидаемы и могут содержать большую погрешность, т.к. в их составе находится довольно большое количество элементов относящихся к фронтэнду.

В заключение хотелось бы отметить, что результаты оказались вполне предсказуемыми. Однако сильно заострять внимание на таком параметре, как размер фреймворка не стоит. Программист, зная все плюсы и минусы каждого варианта, должен выбирать инструмент под конкретную задачу и использовать свои преимущества.

Автор: kpuzuc

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js