Торговец знаниями
Благородные доны, ткните носом или подскажите, как спросить у гугля правильно о процессорной «стоимости» операций и функций в PHP?
Какие функции дорогие и прожорливые, как оптимизировать?

@темы: Оптимизация, PHP

Комментарии
25.02.2011 в 19:25

Крайне злопамятное хамло ;)
О таком периодически пишут на Хабре)
А вообще


$start_time=microtime();
// запускаем функцию
print microtime()-$start_time;

И смотрим на практике)
25.02.2011 в 19:27

Крайне злопамятное хамло ;)
Вот еще такой сайт есть)
www.phpbench.com/
25.02.2011 в 19:29

Торговец знаниями
Co0L, неееее, это мне покажет только время выполнения. Для таких штук есть в том числе и xdebug-профайлинг. А меня интересует именно прожорливость по ресурсам, т.е. по нагрузке. Потому как операция может выполняться долго, но при этом есть совсем чуть процессорного времени и ресурса, а может выполняться быстро, при этом грузя проц на 100%. Вот меня именно прожорливость процессорная интересует.
25.02.2011 в 19:33

Крайне злопамятное хамло ;)
tven
Это по сути то же самое) По ресурсам прожорлива библиотека GD :-D А остальное замеряется микротаймом) Функции вообще не должны выполняться медленно и не сильно расходуя ресурсы, не думаю что такие есть. Это скорее к алгоритмам применимо)
25.02.2011 в 21:10

Торговец знаниями
Co0L, неа, не то же самое. Например mysql_query с тупым запросом выполняется долго, а процессор почти не жрёт. И наоборот, echo без буферизации жрёт процессор неплохо, но выполняется довольно быстро. Или чтение из файла — не сильно шустрое мероприятие, но проц почти не ест. А работа с какими-то из регэкспов — и медленно, и проц грузит как не в себя... )
25.02.2011 в 21:45

Ученик золотой рыбки.
Мы делали так:
- берется скрипт, который ты хочешь проверить;
- запускается и форкается до тех пор, пока load average не достигнет больших значений;
- смотрится на профайлер.

Плюсы:
- просто;
- при сравнении с логами без загрузки - достаточно ясно по увеличению времени показывает узкие места.

Минусы:
- увеличение времени может вызвать не только загрузка проца, но и жесткий, локи таблиц в mysql, обращение к общим ресурсам. Такие вещи неплохо бы отлавливать перед запуском и ставить какие-то заглушки.

Стоит - если уж пользоваться методикой - дополнительно выводить графики загрузки всего и вся.
25.02.2011 в 22:02

Торговец знаниями
Драконофил, не объективно. На этом сервере будет так, на другом — эдак. Плюс очень большое количество влияющих побочных факторов.
Подводя итог: официальных сведений нет, всё на уровне синтетических самопридуманных тестов.
Хреново.
25.02.2011 в 22:15

Крайне злопамятное хамло ;)
habrahabr.ru/search/?q=php+highload
То о чем я писал в первом комменте)
25.02.2011 в 23:07

Торговец знаниями
Co0L, интересное тоже нашёл, но это тоже не то. :) Мне не нужно решить задачу хайлоад проекта, меня интересует скорее теоретическая сторона вопроса. :)
26.02.2011 в 11:22

tven За теоретической стороной - в исходники PHP )))

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail