Почему LiveStreet долго работает?

Увидев у себя full time примерно 0.23, я естественно задумался…

И в первую очередь пошел искать ответ на сайте, но так и не нашел почему в 0.4.2 full time ниже 0.2 секунд не опускается.
Поэтому решил провести маленькое исследование движка. Так как в SYS_HACKER_CONSOLE все хорошо, то полагаться на него я не стал и сам наставил в движек замеры времени с начала старта страницы.

Почти сразу я пришел к вызову _CallModule класса Engine. В этом месте время генерации почему то резко подскакивало до тех самых 0.23.

После небольших копаний я поставил счетчик вызовов этого метода (надо сказать, что метод вызывают другие классы движка в методах __call).

Итак, цифры… (все плагины выключены)
1) При просмотре топика первый раз (страница не кеширована)
full time — 0.25
количество вызовов метода — 729 раз из них 373 вызова для обработки хуков
2) При просмотре топика второй раз (страница закеширована)
full time — 0.23
количество вызовов метода — 698 раз из них 359 вызовов для обработки хуков

Даже если прикинуть теоретически, что на каждый вызов тратится 0.0002 секунды, то при 729 вызовах затрачивается 0,1458 секунд. Но помимо этого есть явные вызовы (которые не идут через вызов _CallModule), а также дополнительные плагины, вызовы которых и хуки идут через этот же метод.

Топик для размышления…

15 комментариев

avatar
а если отключить модуль hook как изменится ситуация?
$config['module']['autoLoad'] = array('Hook','Cache','Security','Session','Lang','Message','User');
avatar
1) первое обращение
full time: 0,28736519813538 seconds
calls: 635
hooks: 327

2) второе обращение
full time: 0,23450803756714 seconds
calls: 608
hooks: 315
avatar
внезапно :)
avatar
Сейчас оставил только:
$config['module']['autoLoad'] = array('Lang');

Работоспособность не изменилась, а время сократилось
avatar
Проксирование через _call() само по себе потеря производительности в том же ZF 2.0 для увеличения производительности стараются избавляться ото всяких
__call() __get() __set() и прочего
avatar
Работа с БД:
Запросов: 24
Время: 0.019 с.

Работа с кэшем:
Запросов: 166, из них
— записей: 12
— прочтений: 154
Время: 0.00282 с.

PHP
Время загрузки модудей: 0.057 с.
Общее время загрузки страницы: 0.274 с.

это на главной… Тоже что-то получается слишком большая разница.
avatar
у любого, кто видел код ливстрита не возникнет вопросов, почему он медленный))
avatar
Слишком толсто.
avatar
а я без насмешки, я серьезно — посмотрите код.
avatar
+1
магия оверлоадинга, хуки методов (при инхеритабельности они нафиг не нужны), dbsimple (пора искоренить, pdo решает почти все те же задачи), smarty (tooooo sloooow), работа с конфигом (дада, там есть магические реплейсы)
avatar
Возник вопрос, а как поведёт себя сайт с посещаемостью от 10000 уников в сутки? Пока вроде примеров не видел.
avatar
<зануда>Нагрузку генерируют не уники, а просмотры. </зануда>
50к просмотров — лс работает. Немного пришлось оптимизировать шаблоны.
avatar
с 10000 сайтов на лс было много, были и с 100000
avatar
Кеширование вас спасет )
avatar
Я задумываться начинаю когда full time > 0.5.
Все что меньше — экономия на спичках :)
Сугубо ИМХО.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.