Я знаю, что использование одиночных кавычек вокруг строки в PHP быстрее, чем использование двойных кавычек, потому что PHP не нужно проверять наличие переменных в одиночной кавычки. Мой вопрос в том, что будет лучше:
A) Строка с двойными кавычками с присутствующими переменными:
echo "foo bar $baz";
или
B) Одиночная цитата с объединенной переменной:
echo 'foo bar ' . $baz;
Я сделал этот показатель в блоге, над которым я работал некоторое время назад ( ссылка ). Однако, поскольку я понял, что существует много переменных. Главными среди них являются:
В целом я бы сказал, что на самом деле это не так уж важно, чтобы вы действительно беспокоились об этом. Вообще говоря, это будет только иметь заметную разницу, если вы пишете огромный сайт (думаю, MySpace, Facebook, Flickr и т. Д.), И обычно к этому моменту у вас так много аппаратного обеспечения, что одно-двойное кавычки снова становится ненужным ,
Лично я бы сказал, что гораздо более важные вещи будут влиять на производительность гораздо более существенным образом (кеширование, оптимизация sql, автоматическая загрузка для предотвращения ненужных включений и т. Д.).
Я лично выбираю одиночные кавычки почти каждый раз, но не для скорости. Я делаю, потому что думаю, что это более читаемо. И это мне важно.
Честно говоря, я не думаю, что вам нужно тщательно изучать это конкретное соглашение, пытаясь сохранить производительность. Но, для чего это стоит, я думаю, что вспоминаю, что переменные внутри строк менее эффективны (помните, что это незначительно и, на мой взгляд, не проблема), чем конкатенация.
Я полностью согласен с Джонатаном Сампсоном в этом вопросе, но есть решение, которое, я считаю, быстрее, чем те, которые вы опубликовали. Использование нескольких аргументов с echo
:
echo 'foo bar', $baz;
Это применимо только при использовании оператора echo
, в любом другом контексте конкатенация, вероятно, лучше, но я стремлюсь к удобочитаемости в этом, поэтому, когда это возможно, я использую интерполяцию.
Я проверил время (microtime) в своем окне Vista / php5 с двумя циклами, один для «и один для».
На 100 итераций: – одинарные кавычки: 0.000139 – двойные кавычки: 0.000228
На 1000 итераций: – одинарные кавычки: 0.002377 – двойные кавычки: 0.002056
На 2000 итерациях: – одинарные кавычки: 0.003562 – двойные кавычки: 0.010041
EDIT: также время эха 'Foo', $ bar; 100 итераций = 0,000107, 1000 итераций = 0,001381, 2000 итераций = 0,022434.
echo 'Foo', $ bar; самый быстрый на 100 и 1000 итерациях, но по какой-то причине он медленнее на 2000 итерациях …?
Без тестирования (это единственный правильный способ решения таких проблем), я бы сказал, одинарные кавычки с конкатенацией, потому что строки не нужно разбирать. Но это очень зависит от реализации.
И двойные кавычки имеют меньше визуального беспорядка и трещины. Поэтому я был бы сторонником Джонатана, говоря, что разница в производительности, вероятно, не настолько значительна, что вы должны беспокоиться об этом; скорее, идти тем способом, который легче поддерживать и согласовывать в рамках вашего проекта.
Я прочитал статью некоторое время назад, когда кто-то действительно протестировал ее.
Вывод состоял в том, что одинарные кавычки более эффективны, но, как указывают два других ответа, разница в производительности не будет достаточно значительной, чтобы волноваться.
Вот более старая статья, последняя развернутая марш 2007 года, но она показывает, что разница в производительности очень низкая: PHP двойной и одинарные кавычки от Dave Dash
Недавно я прочитал еще одну статью (еще не могу ее найти), которая даже заявила, что есть некоторые обстоятельства, когда двойные кавычки могут быть быстрее, чем одиночные qoutes. Не уверен, что это действительно правильно.
Поэтому меня больше беспокоит читаемость вашего кода. Если вы поместите переменные внутри кавычек, это может быть труднее прочитать / найти, если это большой текст.