Профилирование PHP-приложения, 50% времени заняты созданием классов - это нормально? - PullRequest
3 голосов
/ 11 октября 2009

У меня есть веб-приложение, написанное на PHP. Он использует MySQL для хранения данных. Сегодня я решил профилировать его, чтобы найти узкие места в коде и определить, какие его части работают медленнее других. Обычные вещи. Я проделал большую работу, и теперь моя страница загружается на моем рабочем столе менее чем за 0,05 секунды.

Но теперь мой профилировщик говорит мне, что половина этого времени мое приложение занято созданием классов. Контроллеру Front требуются классы Config, Database и User, у них есть свои функции в __construct(), затем он загружает контроллер Page, который загружает Cache и View, и после что он запускает main() метод Page. И все это занимает 50% от общего рабочего времени. А остальные 50% используются для запросов в БД, для манипулирования результатами запросов и вывода их в View.

Вопрос: это хорошо? "50% на строительство" вещь? Значит ли это, что я хорошо оптимизировал свое приложение? Меня учили, что наиболее трудоемкими операциями для веб-приложения являются запросы к базе данных. Я оптимизировал их, применил несколько кешей, и теперь они полностью под контролем. И я на самом деле понятия не имею, как оптимизировать построение классов. Должен ли я попытаться оптимизировать эти __construct() методы или оставить их?

Ответы [ 3 ]

3 голосов
/ 11 октября 2009

Я бы не слишком волновался; если вы не выполняете много работы с данными до того, как завершите рендеринг своей страницы, большую часть времени, которое она будет выполнять, будет потрачено на конструкторы ваших классов, хотя это должно более или менее оставаться постоянным штрафом. Если у вас много логики в контроллере и ваш профилировщик все еще говорит вам, что он тратит много времени на запуск вашего приложения, тогда вы можете подумать об оптимизации; помните, что преждевременная оптимизация - очень плохая вещь, ваше время лучше потратить на разработку новых функций или исправление ошибок, если время выполнения приложения не слишком мало, чтобы считаться ошибкой.

2 голосов
/ 11 октября 2009

Мне когда-то приходилось делать некоторые веб-сервисы, интегрированные в сайт Drupal.

Итак, в конце концов я провел профилирование, чтобы выяснить, что загрузчик Drupal использует 90% времени, а мой код - оставшиеся 10%. Drupal плохо спроектирован, хотя :), поэтому он загружает много и много вещей, которые он на самом деле не использует.

Я думаю, вам решать в вашем случае.

2 голосов
/ 11 октября 2009

Является ли это функциональностью конструкции или она вызывает? Вы используете инструмент, где вы можете увидеть, из чего состоят эти 50%? Поскольку большая часть этой работы может вызывать другие функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...