Русскоязычный форум, посвященный фреймворку Kohana http://forum.kohanaframework.su/ |
|
Ускорение работы Коханы http://forum.kohanaframework.su/viewtopic.php?f=34&t=46 |
Страница 1 из 1 |
Автор: | admin [ 21 фев 2012, 17:14 ] |
Заголовок сообщения: | Ускорение работы Коханы |
Думаю вы знаете, что Кохана-очень быстрый фреймворк. Я бы даже сказал, один из самых быстрых. При этом его еще и умудряются оптимизировать. Набрел на интересную статейку. Хотя там написано для версии 3.0, но все равно можно взять на вооружение. --- Не так давно я представил набросок простейшего фреймворка, предназначеного для изучения новичками и для создания простейших сайтов. Комментарий, оставленный к тому посту уважаемым мною Иваном Броткиным, заинтриговал. Стало очень интересно, чего же можно добиться, если поднастроить ko3 на скорость работы. Интерес чисто академический, поэтому и настройки, по ходу дела, будут такие же. Единственное условие, которое я поставил для себя: фреймворк должен остаться полностью работоспособным, без ограничений! Итак, начнем. Для начала, отключаем все, что можно: кеш, логирование, все доп.модули. Вывод из контролера в браузер делаем через echo, чтобы избежать использование доп. кода в самой кохане. Смотрим результат: Код:
Совсем-совсем не плохо, если сравнивать с ko3.2 и дефолтными настройками (напомню: time: 0.0946259498596; memory: 1330864). Но, данные параметры все-равно довольно высоки, поэтому идем дальше. Для начала, вспоминаем схему работы коханы и последовательность загрузки файлов. Попутно, пытаюсь вспомнить, что именно используется в core. В результате, перенес в application/classes файлы arr.php, controller.php, request.php, route.php. Все из system/classes/kohana. Соответственно, убрал из названия файлов Kohana_. Переносить core.php смысла не имеет, это будет видно чуть ниже. Смотрим результат: Код:
Лучше, но не сильно. Изучаем дальше. В этот момент я вспомнил, что не отключил еще один момент в bootstrap.php. Честно говоря, до сих пор сомневаюсь, что его надо отключать, но раз уж цель полностью оптимизировать загрузку фреймворка — буду отключать. Этот «момент» называется config. Комментируем строку Kohana::$config->attach и смотрим, что получилось: Код:
Помогло, но не сильно. Снова изучаем код фреймворка… Начинаем, соответственно, с точки входа — index.php. После быстрого изучения файла понимаю, что в нем есть несколько ненужных строк: Код:
Т.к. мы уже протестили установку коханы — нет смысла при каждом запуске делать это снова, верно? Комментируем. Код:
А вот тут все намного интереснее. При каждом запуске происходит проверка, существует ли файл application/classes/kohana.php. Если да — подключаем, если нет — подключаем из директории system. Комментируем этот блок, копируем файл system/classes/kohana.php в application/classes и вставляем в index.php: Код:
Вообще, это не очень хорошо, но у нас же чисто академический интерес, верно? ![]() Код:
Странно, но мы ничего и не выиграли от этих операций. Ну да ладно, лишним все-равно не будет. Кстати, если не заметили, именно в index.php происходит подключение system/classes/kohana/core.php. Именно по этой причине и нет смысла в переносе данного файла в application. Т.к. я перенес в application основные файлы, необходимые для загрузки, логично попробовать отключить все остальные файлы и проверить, действительно ли хватает нескольких файлов для запуска фреймворка. Переименовываю system/kohana в system/_kohana (не забыв в index.php поменять путь для SYSPATH.’classes/kohana/core’.EXT). Запускаю и выпадаю в осадок… Kohana говорит, что не может найти модуль логирования (Kohana_Log). Но ведь я закомментировал подключение логов в bootstrap! Однако, не верить кохане нельзя, поэтому лезу в core.php в строку 364: Код:
Мдя… Вроде и не используем эти модули, но они нужны. Ок, подсовываем данные классы в application/classes/kohana (log.php и config.php). После этого фреймворк запустился, значит это тот минимум, без которого работать не будет вообще ничего. Далее… Собственно все )). Серьезно. Я провел еще пару часов на попытки ускорить работу, но толком ничего не добился (сможете помочь — дайте знать!). Максимум, чего я смог добиться (да и то, считаю что это погрешности): Код:
Конечно-же, это совсем не плохо для ko3.0, но очень далеко до простейшего микро-фреймворка, собранного «на коленке». Фреймворки, конечно-же, не созданы для идеальной скорости, их стезя — удобство разработки. Но, как показала практика, их можно (и нужно!) ускорять. --- Источник |
Автор: | aktuba [ 13 мар 2012, 13:08 ] |
Заголовок сообщения: | Re: Ускорение работы Коханы |
Я рад, что мой пост Вам так понравился, что Вы его полностью скопировали сюда ). Но все-таки, хотя бы предупреждать надо ![]() 3.0 в тестах был использован намеренно, т.к. 3.2 заметно хуже, в плане производительности. |
Автор: | admin [ 13 мар 2012, 16:08 ] |
Заголовок сообщения: | Re: Ускорение работы Коханы |
Я указал ссылку на источник. В следующий раз буду предупреждать ) Что касается версий-основные моменты все равно соответствуют. |
Автор: | Lermontov2 [ 22 янв 2014, 14:39 ] |
Заголовок сообщения: | Re: Ускорение работы Коханы |
А если сравнивать в плане производительности 3.0 и 3.3, что быстрее? А также интересно сравнение по производительности 2.3.2 и 3.3. Буду очень благодарен за ответ ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 4 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |