denver
?>Скриптер
Концептуальный вопрос по оптимизации "узких мест" PHP кода
Недавно столкнулся с проблемой выявления узких мест в коде (строк забирающих слишком много процессорного времени) а именно вставкой что-то типа $trace->chekpoint(__LINE__) ну скажем в каждой десятой строке кода (не ООП). В конце выводим массив всех чекпоинтов (сгруппированным по __LINE__ с просумированным временем на каждый). Ну вобщем идея понятна я думаю.
Однако есть недостатки такого трэйсинга, не буду вдаваться какие (если надо поясню). Самое главное что это очень утомительно вставлять такие строки и затем разбираться в отчете.
Мне пришло в голову может и тривиальная идея: раз уж PHP это интерпретируемый язык то он ведь мог бы гипотетически подсчитывать время выполнения каждой строки кода во время выполнения? Уж не знаю как бы он выводил эту информацию, однако скажем в идеальном редакторе кода каждая линия подсвечивалась бы градацией бэкграунда от зеленого (среднее время выполнения) к красному (максимальное время выполнения). Скажем оптимизированный код тогда состоял бы только из зеленых строчек за исключением пары известных узких мест
Понятно что эти подсчеты сами по себе были бы ресурсоемкими, однако можно ж было бы их и отключать какой-либо директивой на недевелоперском сервере.
Может ли кто объяснить почему это до сих пор не реализовано? Есть ли подводные камни или просто в голову никому пока не приходило?
ЗЫ. Первый пост, прошу сильно не пинать
Недавно столкнулся с проблемой выявления узких мест в коде (строк забирающих слишком много процессорного времени) а именно вставкой что-то типа $trace->chekpoint(__LINE__) ну скажем в каждой десятой строке кода (не ООП). В конце выводим массив всех чекпоинтов (сгруппированным по __LINE__ с просумированным временем на каждый). Ну вобщем идея понятна я думаю.
Однако есть недостатки такого трэйсинга, не буду вдаваться какие (если надо поясню). Самое главное что это очень утомительно вставлять такие строки и затем разбираться в отчете.
Мне пришло в голову может и тривиальная идея: раз уж PHP это интерпретируемый язык то он ведь мог бы гипотетически подсчитывать время выполнения каждой строки кода во время выполнения? Уж не знаю как бы он выводил эту информацию, однако скажем в идеальном редакторе кода каждая линия подсвечивалась бы градацией бэкграунда от зеленого (среднее время выполнения) к красному (максимальное время выполнения). Скажем оптимизированный код тогда состоял бы только из зеленых строчек за исключением пары известных узких мест
Понятно что эти подсчеты сами по себе были бы ресурсоемкими, однако можно ж было бы их и отключать какой-либо директивой на недевелоперском сервере.
Может ли кто объяснить почему это до сих пор не реализовано? Есть ли подводные камни или просто в голову никому пока не приходило?
ЗЫ. Первый пост, прошу сильно не пинать

