Будет ли сокращение числа включений / требует увеличения производительности? - PullRequest
5 голосов
/ 06 августа 2010

Что лучше для настройки производительности скрипта?

Этот?

require_once("db.php");

if (!is_cached()) {
  require_once("somefile.php");
  require_once("somefile2.php");
  //do something
} else {
  //display something
}

Или этот?

require_once("db.php");
require_once("somefile.php");
require_once("somefile2.php");

if (!is_cached()) {
  //do something
} else {
  //display something
}

Стоит ли включать / требует в структуры управления потоком или нет?

Спасибо

Ответы [ 5 ]

2 голосов
/ 06 августа 2010

Да, это повысит производительность и вопреки тому, что говорили другие, влияние может быть незначительным.

Когда вы включаете / требуете файлы, PHP будет проверять все определенные include_paths, пока не найдет файл или не будет ничего проверять.В зависимости от количества включаемых путей и количества включаемых файлов это будет иметь серьезное влияние на ваше приложение, особенно при включении каждого файла заранее.Включая ленивый (как в вашем первом примере) или - даже лучше - с использованием автозагрузчика.

Связанное чтение, которое рассматривает это более подробно:

* Приведенный здесь совет применим к любому приложению или среде

2 голосов
/ 06 августа 2010

Включения и требования частично разработаны для того, чтобы вы могли упорядочить свой код и упростить обслуживание программного обеспечения. Хотя технически наблюдается снижение производительности при использовании включений, оно незначительно и более чем компенсируется повышением удобства обслуживания вашего программного обеспечения. Особенно, если вы используете кэш кода операции. Я не стал бы беспокоиться об этом и объяснил бы это преждевременной оптимизацией.

2 голосов
/ 06 августа 2010

Иногда это может стоить, если требуемые файлы огромны, а кеш байт-кода недоступен.

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

Я видел пакеты общего хостинга,незапутанные монолитные включения могут сэкономить до полсекунды - что составляет лот .

Кроме того, включенный код PHP анализируется и занимает память, независимо от того,выполнено или нет.Чистая структура с постными объектами обычно является оптимальным способом.

1 голос
/ 06 августа 2010

Да, это повысит производительность, но очень мало, поэтому оно того не стоит.

0 голосов
/ 06 августа 2010

Использование абсолютных путей для включаемых файлов значительно увеличит производительность. Протестируйте с помощью Apache Benchmark, чтобы убедиться, что это не так.

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