Действительно ли автозагрузка снижает производительность при использовании APC (последние версии / последние).Ориентиры? - PullRequest
19 голосов
/ 25 января 2011

Я пытаюсь найти определенный ответ на вопрос, что автозагрузка снижает производительность при использовании APC и почему (тесты?)

P.S. Нашел эту ссылку , используя google / stackoverflow, но мне интересно, если это все еще сохраняется? PHP должен быть улучшен, чтобы справиться с этим? Потому что автозагрузка это круто!

Ответы [ 2 ]

6 голосов
/ 26 января 2011

Лично я не верю, что полагаться на __autoload () - это хорошая практика. PHP является свободно типизированным языком, а не лениво типизированным языком. :)

Проверьте некоторые характеристики здесь:

Ответ Расмуса на это (который вы также нашли) был моим ориентиром на протяжении всех этих лет:

<arnaud_> does autoload have a performance impact when using apc ?
<Rasmus_> it is slow both with and without apc
<Rasmus_> but yes, moreso with apc because anything that is autoloaded is pushed down into the executor
<Rasmus_> so nothing can be cached
<Rasmus_> the script itself is cached of course, but no functions or classes
<Rasmus_> Well, there is no way around that
<Rasmus_> autoload is runtime dependent
<Rasmus_> we have no idea if any autoloaded class should be loaded until the script is executed
<Rasmus_> top-level clean deps would speed things up a lot
<Rasmus_> it's not just autoload
<Rasmus_> it is any sort of class or function declaration that depends on some runtime context
<Rasmus_> if(cond) function foo...
<Rasmus_> if(cond) include file
<Rasmus_> where file has functions and classes 
<Rasmus_> or heaven forbid: function foo() { class bar { } }
5 голосов
/ 26 января 2011

Я сделал еще поиск в Google и нашел эту интересную статью , кратко изложенную ниже:

Тесты проводились 10 раз для каждой стратегии:

enter image description here

Заключение

У каждого подхода есть свои достоинства. Во время разработки вы не хотите запускать скрипт для генерации карты классов или обновлять карту классов вручную каждый раз, когда добавляете новый класс. Тем не менее, если вы ожидаете большой трафик на свой сайт, тривиально легко запустить сценарий во время развертывания, чтобы построить для вас карту классов, и, таким образом, вы сможете немного повысить производительность своего приложения.

...