Constructor: 0.000084
Method1: 0.037100 Method2: 0.000101 Total execution time: 0.037980
Прогнав этот тест несколько раз, мы получим всю информацию, необходимую, чтобы узнать, которая из трех функций нуждается в оптимизации. Итак, мы создали профиль для сценария.
Классификация узких мест
Профилирование осуществляется для поиска узких мест, а когда они обнаружены, их следует классифицировать по нескольким параметрам. Во-первых, надо оценить степень серьезности каждого узкого места. Во-вторых, следует оценить сложность оптимизации каждого из них.
С учетом этих факторов принимается решение о том, какие функции, участки кода или методы сценария должны быть оптимизированы.
Техника оптимизации
Рассмотрим теперь различные способы оптимизации времени выполнения сценария в зависимости от происхождения узкого места: • Оптимизация кода
Можно оптимизировать время выполнения интенсивных вычислений (плохо построенные циклы for() или while() или просто медленные команды).
♦ Буферизация и сжатие вывода
Этот прием полезен, если фактором замедления является сложность вывода в броузер, когда выводимое содержимое генерируется множеством функций.
♦ Оптимизация базы данных
Применяется, когда замедление обусловлено выполнением запросов к базе данных или интенсивным использованием соединений и функций баз данных.
♦ Кэширование
Применяется, когда замедление обусловлено временем генерации страницы, которое не может быть сокращено, либо запросы к базе данных невозможно оптимизировать. Другим основанием для кэширования может быть частое обращение к относительно статичным данным.
Оптимизация кода
Собственно код обычно не является причиной низкой производительности. Большинство трудностей оптимизации связано с базами данных или вводом/выводом данных.
Не пытайтесь оптимизировать код РНР, пока не выяснится, что его работу замедляет именно функция или ряд строк кода. В обычном сценарии РНР 10% времени выполнения тратится на выполнение кода и 90% - на ввод/ вывод и операции с базами данных.
Однако есть особые случаи, когда сценарий, выполняющий сложные вычисления, может замедлить работу сайта или приложения. Вот перечень рекомендаций для оптимизации кода:
♦ Исследуйте циклы
♦ Используйте по возможности более быстрые функции
♦ Выберите лучший способ вывода данных
♦ Выберите лучший способ ввода данных
♦ Реже применяйте функцииесИо()
♦ Оптимизируйте код с помощью Zend Optimizer