Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 19 мар 2024, 11:28

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Ускорение работы Коханы
СообщениеДобавлено: 21 фев 2012, 17:14 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Думаю вы знаете, что Кохана-очень быстрый фреймворк. Я бы даже сказал, один из самых быстрых. При этом его еще и умудряются оптимизировать. Набрел на интересную статейку. Хотя там написано для версии 3.0, но все равно можно взять на вооружение.
---

Не так давно я представил набросок простейшего фреймворка, предназначеного для изучения новичками и для создания простейших сайтов. Комментарий, оставленный к тому посту уважаемым мною Иваном Броткиным, заинтриговал. Стало очень интересно, чего же можно добиться, если поднастроить ko3 на скорость работы. Интерес чисто академический, поэтому и настройки, по ходу дела, будут такие же. Единственное условие, которое я поставил для себя: фреймворк должен остаться полностью работоспособным, без ограничений!

Итак, начнем. Для начала, отключаем все, что можно: кеш, логирование, все доп.модули. Вывод из контролера в браузер делаем через echo, чтобы избежать использование доп. кода в самой кохане. Смотрим результат:

Код:
    time: 0.0273728370667;
    memory: 749360


Совсем-совсем не плохо, если сравнивать с ko3.2 и дефолтными настройками (напомню: time: 0.0946259498596; memory: 1330864). Но, данные параметры все-равно довольно высоки, поэтому идем дальше.

Для начала, вспоминаем схему работы коханы и последовательность загрузки файлов. Попутно, пытаюсь вспомнить, что именно используется в core. В результате, перенес в application/classes файлы arr.php, controller.php, request.php, route.php. Все из system/classes/kohana. Соответственно, убрал из названия файлов Kohana_. Переносить core.php смысла не имеет, это будет видно чуть ниже. Смотрим результат:

Код:
    0.0178439617157;
    memory: 731848


Лучше, но не сильно. Изучаем дальше. В этот момент я вспомнил, что не отключил еще один момент в bootstrap.php. Честно говоря, до сих пор сомневаюсь, что его надо отключать, но раз уж цель полностью оптимизировать загрузку фреймворка — буду отключать. Этот «момент» называется config. Комментируем строку Kohana::$config->attach и смотрим, что получилось:

Код:
    time: 0.0163331031799;
    memory: 696248


Помогло, но не сильно. Снова изучаем код фреймворка… Начинаем, соответственно, с точки входа — index.php. После быстрого изучения файла понимаю, что в нем есть несколько ненужных строк:

Код:
if (file_exists('install'.EXT))
{
    // Load the installation check
    return include 'install'.EXT;
}


Т.к. мы уже протестили установку коханы — нет смысла при каждом запуске делать это снова, верно? Комментируем.

Код:
if (is_file(APPPATH.'classes/kohana'.EXT))
{
    // Application extends the core
    require APPPATH.'classes/kohana'.EXT;
}
else
{
    // Load empty core extension
    require SYSPATH.'classes/kohana'.EXT;
}


А вот тут все намного интереснее. При каждом запуске происходит проверка, существует ли файл application/classes/kohana.php. Если да — подключаем, если нет — подключаем из директории system. Комментируем этот блок, копируем файл system/classes/kohana.php в application/classes и вставляем в index.php:

Код:
require APPPATH.'classes/kohana'.EXT;


Вообще, это не очень хорошо, но у нас же чисто академический интерес, верно? ;) Проверяем результат:

Код:
    time: 0.0158510932922;
    memory: 696248


Странно, но мы ничего и не выиграли от этих операций. Ну да ладно, лишним все-равно не будет. Кстати, если не заметили, именно в 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:

Код:
// Load the logger
Kohana::$log = Kohana_Log::instance();
 
// Load the config
Kohana::$config = Kohana_Config::instance();


Мдя… Вроде и не используем эти модули, но они нужны. Ок, подсовываем данные классы в application/classes/kohana (log.php и config.php). После этого фреймворк запустился, значит это тот минимум, без которого работать не будет вообще ничего.

Далее… Собственно все )). Серьезно. Я провел еще пару часов на попытки ускорить работу, но толком ничего не добился (сможете помочь — дайте знать!). Максимум, чего я смог добиться (да и то, считаю что это погрешности):

Код:
    time: 0.0151529312134;
    memory: 691480


Конечно-же, это совсем не плохо для ko3.0, но очень далеко до простейшего микро-фреймворка, собранного «на коленке». Фреймворки, конечно-же, не созданы для идеальной скорости, их стезя — удобство разработки. Но, как показала практика, их можно (и нужно!) ускорять.

---

Источник

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ускорение работы Коханы
СообщениеДобавлено: 13 мар 2012, 13:08 
Не в сети
Зеленый
Аватара пользователя

Зарегистрирован: 13 мар 2012, 13:04
Сообщения: 6
Я рад, что мой пост Вам так понравился, что Вы его полностью скопировали сюда ). Но все-таки, хотя бы предупреждать надо ;)

3.0 в тестах был использован намеренно, т.к. 3.2 заметно хуже, в плане производительности.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ускорение работы Коханы
СообщениеДобавлено: 13 мар 2012, 16:08 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Я указал ссылку на источник. В следующий раз буду предупреждать )

Что касается версий-основные моменты все равно соответствуют.

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ускорение работы Коханы
СообщениеДобавлено: 22 янв 2014, 14:39 
Не в сети
Зеленый

Зарегистрирован: 20 янв 2014, 17:39
Сообщения: 8
А если сравнивать в плане производительности 3.0 и 3.3, что быстрее? А также интересно сравнение по производительности 2.3.2 и 3.3. Буду очень благодарен за ответ :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group