Замечание к "Оптимизация PHP-приложений: пожалейте свой сервер!"

Главные вкладки

Аватар пользователя axel axel 12 мая 2006 в 21:15

Quote:

Оптимизация PHP-приложений: пожалейте свой сервер! - На сайте blogs.hackerscenter.com опубликована статья с базовыми рекомендациями по оптимизации PHP-приложений. [PHPInside]

Рекомендации очевидные и логичные, но часто ими пренебрегают. Стоит однако помнить, что оптимизация это не всегда оптимизация скорости - делая программу быстрее можем теряем в потреблении памяти, как это происходит в примере с включением файла. Конечно, если инклюд включить в текст основной программы время на открытие и чтение второго файла не потеряется, но инклюды позволяют экономить память:

function name1() {
 include(’test1.inc’);
}

function name2() {
 include(’test2.inc’);
}

и т.д.

Включения файлов срабатывают не при разборе основного файла, а при вызове функций из него (поправьте если я ошибаюсь). Применительно к друпаловской схеме обработчиков событий в функциях получаем, что например при вызове обработчика name2() мы реально включим в память только то, что отностся к нему в test2.inc и не включим text1.inc. Проигрываем по скорости, но можем значительно выиграть в потреблении памяти - например вынести обработчики help и пр. что нужно только при выводе списка модулей администратором и скорости не требует, зато память жрёт.

Кстати, такая схема используется в некоторых contrib-модулях Drupal и её эффективность приводилась в рассылке разработчиков. Не применяют в стандартных модулях такой финт похоже исключительно из-за сохранения читабельности кода - меньше файлов на модуль, проще разбираться.