Оптимизация PHP-скриптов (профилирование)

16.10.2010

Написал свою реализацию простейшего профайлера (не люблю такие словечки, но они, похоже, общеприняты среди программистов). Используется declare на каждый тик + метки в коде. Смотрите исходники.

Для использования нужно испытываемый код вставлять в блок declare, и предварять регистратором. Примерно так:

register_tick_function('profiler');
declare(ticks=1) {
// тут тестируемый код
}

Об отладке и тестировании вообще

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

Я сперва хотел воспользоваться попсовым xdebug, но de из его названия стоит убрать. Это такая глючная штука! С ним, например, PHP может показывать пустой экран в случаях, в которых без него выдал бы предупреждение. В общем, такое мне не нужно, зря время потратил.

Моя функция, конечно, совсем простенькая, но и она вполне успешно позволяет определить действительно узкие (в плане производительности) места кода.

Комментарии

  1. # Sam Dark

    Вот зря так про xDebug. Нормальный он. Нормальный.

    Стоит ещё глянуть на pecl.php.net/package…

  2. #  Тормоз

    Если у меня с xdebug появляются дополнительные проблемы, которые я не могу идентифицировать — это нифига не нормально. Кстати, даже в описаниях xdebug в сети часто встречается предупреждение о том, что он может вносить сумятицу в поведение PHP-скриптов.

    Я пару часов однажды убил на странную никак не проявляемую ошибку (просто белый экран был и всё), а потом вспомнил, что недавно ставил xdebug. Удалил — всё заработало.

  3. # webpavilion

    Да-да-да свой лесопед намного круче глючного xdebug`a, только вот глучит он исключительно под виндовозом и в кривых руках. Несколько лет пользуюсь ubuntu+netbeans+xdebug стабильностью и удобством работы доволен.

  4. #  Тормоз

    У меня давно Linux, и если у тебя всё работает — это значит, что ты просто (пока) не сталкивался с ситуациями, в которых xdebug вносит дополнительные глюки. Так что сам ты криворучка.

  5. # Бутылк.Ус

    Айййй!!!
    tick-функции крэшуют виндовзные сервера. Ибо форточки есть результат дефекации кокаинщиков из мелкомягких.
    Но, в угоду СПО-философии, нельзя делать такие штуки, которые пашут в сугубо одной системе. Думаю так =)

  6. # Тормоз

    Мне пофиг, я решаю свои задачи :) Это ж не на продажу скриптик, просто поделился простым решением. Может, кому-то тоже подойдёт, как и мне.

Комментирование этой статьи закрыто.

Интересное Покупки ТехникаРазное Отдых Статьи Строительство Услуги Общество Хобби Культура Советы Уют