Влияние на производительность при многократном использовании файла по сравнению с его повторным использованием - PullRequest
1 голос
/ 27 марта 2012

Подумайте о шаблонах PHP.

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

Любые мысли приветствуются.

Ответы [ 3 ]

0 голосов
/ 27 марта 2012

Полагаю, под "дисковым кешем" вы на самом деле ссылаетесь на кеш страниц? Википедия: Кэш страницы

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

Я был бы склонен использовать что-то вроде APC в качестве объектного кеша, это имеет большой побочный эффект: не нужно переписывать какой-либо код, поскольку все это делается за кулисами. Другой возможностью было бы просто назначить свой шаблон переменной и постоянно использовать его. Или, если вы хотите, вы даже можете использовать Memcache, этот тип вещей более полезен для кэширования возвратов базы данных или больших наборов данных.

Извините за немного бессвязные бредни ...

0 голосов
/ 27 марта 2012

Я недавно размышлял

Это совершенно неправильно с вашей стороны.
Беспричинное созерцание из ниоткуда редко приносит пользу, но, скорее всего, доставит вам неприятности.Просто из ниоткуда.

Вместо того, чтобы созерцать, нужно сделать профилирование .
Конечно, нет, чтобы измерять какие-либо изменения, как сказал Х Хатфельд, но чтобы определить, нужны ли они вообще.В большинстве случаев оказывается, что вы лаяли не на то дерево.
Профилирование - это то, что заставляет вас лаять на правильное.

имеет ли смысл читать файл шаблона onc, сохранять его в памяти, а затем анализировать

Для проектов с высокой нагрузкой (или раздутых), которые он создает.
Итак, в PHP уже есть такая функция, которая называется bytecode cache.На рынке есть множество вещей , в нашей компании мы используем eAccelerator.

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

0 голосов
/ 27 марта 2012

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

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

Редактировать

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

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