Платформы PHP5: автозагрузка и кэширование кода операции

Много платформ используют spl_autoload_register() для того, чтобы динамично загрузить классы (т.е. контроллеры и модели). Существует несколько сообщений по вопросу о кэшировании кода операции и автозагрузке. Одно сообщение в особенности имеет ответ @cletus, какие ссылки @Rasmus создание многих операторов, которые оказываются сомнительными для тех, которые используют APC как кэш кода операции:

Кажется, нет никакого обсуждения относительно никаких возможных альтернатив автозагрузке, которые не влияют на производительность кэша кода операции.

Существует ли способ двигаться, факт автоматически загрузился, классы не становятся добавленными к кэшу кода байта?

В противном случае есть ли какие-либо альтернативные методы для того, чтобы динамично загрузить классы, которые будут кэшироваться?

10
задан Community 23 May 2017 в 12:19
поделиться

1 ответ

Кажется, что все еще существует путаница в этой теме, однако в большинстве случаев она сводится к простоте в сравнении с производительностью.

Хорошей темой для чтения будет эта тема в списке рассылки Zend Frameworks:

http://n4.nabble.com/ZF-and-Autoloading-td640085i20.html

Теперь взаимосвязь здесь, потому что если вы унаследуете от не-yet-defined класс, вы можете полагаться на автозагрузку, чтобы определить его (хотя вы также можете полагаться на включительно), и фактически наличие автозагрузочного сооружения может поощрять вас к использованию такого наследства. Но это не автозагрузка что приносит неприятности (см. после Рамуса "это не просто автозагрузка" в блог для некоторых примеров проблемных вещей). Так что правильной фразой будет "люди, которые склонны полагаться на автозагрузку, склонны также использовать код, который не поддается обязательной компиляции". Которого не видно как вина автозагрузки, конечно, и просто избегание автозагрузки не поможет немного с этим - тебе также придется переписать свой код так, чтобы может произойти привязка по времени компиляции. И это не имеет ничего общего с использованием автозагрузка с "новым", например.

Что касается замедления от эффектов, описанных выше - т.е. отсутствия привязка во время компиляции - код действительно становится немного медленнее и такой код может привести в некоторых непонятных случаях к некоторым проблемам с кэшами опкодов. (не в случаях автозагрузки - а в случаях, когда определены классы в условиях, или, не дай Бог, создается другое определение. в зависимости от условия) - но это не имеет никакого отношения к использованию автозагрузка сама по себе. Однако, количество замедления, похоже, сильно преувеличено тем. люди - это ничто (и я повторяю, чтобы было ясно - NOTHING ) в сравнении к преимуществу производительности, предоставляемому кэш-памятью опкода из-за отсутствия дисковых операций и этапа компиляции. Вы, вероятно, могли бы составить искусственный эталон, который покажет некоторые значительные замедление, но я не верю, что какое-либо реальное приложение вообще заметит.

источник: http://n4.nabble.com/ZF-and-Autoloading-td640085i20.html#a640092

5
ответ дан 4 December 2019 в 03:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: