Оптимизация PHP-скриптов (профилирование)
16.10.2010 технологии
Написал свою реализацию простейшего профайлера (не люблю такие словечки, но они, похоже, общеприняты среди программистов). Используется declare на каждый тик + метки в коде. Смотрите исходники.
Для использования нужно испытываемый код вставлять в блок declare, и предварять регистратором. Примерно так:
register_tick_function('profiler');
declare(ticks=1) {
// тут тестируемый код
}
Об отладке и тестировании вообще
Хочу заметить, что снова мне даже самые язвительные читатели помогают! Спасибо :) Скажу честно, я раньше вообще не знал про эти профайлеры, но подсказали.
Я сперва хотел воспользоваться попсовым xdebug, но de из его названия стоит убрать. Это такая глючная штука! С ним, например, PHP может показывать пустой экран в случаях, в которых без него выдал бы предупреждение. В общем, такое мне не нужно, зря время потратил.
Моя функция, конечно, совсем простенькая, но и она вполне успешно позволяет определить действительно узкие (в плане производительности) места кода.
Комментарии
Комментирование этой статьи закрыто.
Вот зря так про xDebug. Нормальный он. Нормальный.
Стоит ещё глянуть на pecl.php.net/package…
Если у меня с xdebug появляются дополнительные проблемы, которые я не могу идентифицировать — это нифига не нормально. Кстати, даже в описаниях xdebug в сети часто встречается предупреждение о том, что он может вносить сумятицу в поведение PHP-скриптов.
Я пару часов однажды убил на странную никак не проявляемую ошибку (просто белый экран был и всё), а потом вспомнил, что недавно ставил xdebug. Удалил — всё заработало.
Да-да-да свой лесопед намного круче глючного xdebug`a, только вот глучит он исключительно под виндовозом и в кривых руках. Несколько лет пользуюсь ubuntu+netbeans+xdebug стабильностью и удобством работы доволен.
У меня давно Linux, и если у тебя всё работает — это значит, что ты просто (пока) не сталкивался с ситуациями, в которых xdebug вносит дополнительные глюки. Так что сам ты криворучка.
Айййй!!!
tick-функции крэшуют виндовзные сервера. Ибо форточки есть результат дефекации кокаинщиков из мелкомягких.
Но, в угоду СПО-философии, нельзя делать такие штуки, которые пашут в сугубо одной системе. Думаю так =)
Мне пофиг, я решаю свои задачи :) Это ж не на продажу скриптик, просто поделился простым решением. Может, кому-то тоже подойдёт, как и мне.