Действительно ли это влияет на использование «вместо» в PHP? - PullRequest
2 голосов
/ 24 декабря 2009

Веб-сайт, 5 человеко-лет в коде (5 разработчиков, примерно один год), 10 тысяч обращений каждый день. Это действительно будет иметь влияние, если мы изменим все «на», где это возможно?

Ответы [ 5 ]

9 голосов
/ 24 декабря 2009

См. Раздел double (") против одинарных (') в PHPBench (прокрутка до конца страницы). Когда я вызывал страницу, я видел следующие результаты:

Single Quotes: 257 µs
Double Quotes: 232 µs

Если 25 мкс не имеют значения для вашей проблемной области, это не имеет значения.

Я собираюсь попытаться проработать здесь математику, кто-то поправит меня, если я сделаю ошибку. Допустим, у вас есть 10 000 мест, где вы использовали двойные кавычки вместо одинарных кавычек с разницей в 25 мкс на загрузку страницы (кто знает, будет ли это на самом деле так, вам нужно сравнить свой фактический код), что будет Разница во времени исполнения 0,25 секунды. Это может быть значительным в зависимости от загрузки сервера, если вы были Facebook. Тем не менее, я подозреваю, что есть много других мест в вашей кодовой базе, которые гораздо более ресурсоемки, и вы захотите их оптимизировать, прежде чем даже взглянуть на кавычки. Просто посмотрите на болевые точки, выделенные на странице PhpBench, и вы увидите, что у вас должны быть другие приоритеты. Кроме того, эти цифры будут существенно отличаться, если вы запустите другую реализацию php, такую ​​как Quercus - которая может устранить некоторые узкие места в производительности.

8 голосов
/ 24 декабря 2009

Нет.

Как кто-то указывал в вопросе о микрооптимизации PHP несколько недель назад (я думаю, что проблема была той же «против»), реализация оптимизации почти всегда будет стоить больше времени, чем когда-либо сэкономленная ею. *

6 голосов
/ 24 декабря 2009

Да, в итоге вы совершите одну ошибку, когда измените "$test\n" на '$test\n'.

Действительные числа, нет.

2 голосов
/ 24 декабря 2009

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

Не могу порекомендовать вам прочитать Запомните также правила Клуба оптимизации .

0 голосов
/ 11 января 2010

Нет никакой разницы в производительности во время выполнения. Но есть разница во время компиляции.
Обычный способ думать о кавычках в PHP:

Переменные внутри строк в одинарных кавычках не анализируются, поэтому движку PHP не нужно тратить время на их поиск. Следовательно, строки в одинарных кавычках должны быть более эффективными

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

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

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