Что быстрее в PHP, одинарные или двойные кавычки?

Возможный дубликат:
Есть ли преимущество в производительности одинарной кавычки по сравнению с двойной кавычкой в ​​php?

Что быстрее, одинарные или двойные кавычки и почему?

Кроме того, в чем преимущество использования любого метода?


person cornernote    schedule 02.02.2011    source источник
comment
Неважно, что быстрее   -  person zerkms    schedule 02.02.2011
comment
comment
Этот вопрос был задан в спешке без должного изучения и без объяснения причины моего вопроса. Он довольно старый и, кажется, привлекает негативные моменты. Правильно ли просить удалить вопрос, или мне просто оставить его и жить с тем фактом, что я плохо задал вопрос?   -  person cornernote    schedule 16.04.2015
comment
поскольку есть люди, проголосовавшие за ваш вопрос, его будет трудно удалить.   -  person Félix Adriyel Gagnon-Grenier    schedule 30.07.2015


Ответы (7)


Зависит от того, что вы хотите сделать. Я только что сделал несколько тестов и протестировал назначение строк с 5 тестовыми примерами: двойные кавычки + переменная, двойные кавычки, двойные кавычки и добавление строки, одинарные кавычки и одинарные кавычки с добавлением строки.

Мой тестовый код. Миллион петель. Назначение строки.

<?php

$start = microtime(true);

$str = "";

for($i = 0; $i<1000000; $i++)
{
        $str = "hello $i";
}

$end = microtime(true);

echo $end - $start;

Результаты:

Строки в одинарных и двойных кавычках без переменных одинаково быстры. (каждый повторил около 0,08). Строка с одинарными и двойными кавычками с конкатенацией переменных примерно одинакова, но медленнее, чем без переменной. (каждый повторялся около 0,17-0,20) Двойные кавычки с переменной в строке были самыми медленными (около 0,20-0,25)

Таким образом, Single/Double на самом деле не имеет значения, но кажется, что конкатенация строк выполняется быстрее, чем замена переменных.

person Alexandru Petrescu    schedule 02.02.2011

Я бы сказал, что одинарные кавычки быстрее, потому что они не требуют Shift ;)

Различные кавычки влияют на переменный вывод и escape-символы. Содержимое внутри одинарных кавычек берется как есть, управляющие символы и переменные не интерпретируются. Двойные кавычки интерпретируют значения переменных и экранируют специальные символы, такие как символы новой строки (\n).

person jondavidjohn    schedule 02.02.2011
comment
+0 за хороший ответ, +1 за шифт. - person sberry; 02.02.2011
comment
нет, только старая добрая простая клавиатура US Eng. Я тоже люблю без сдвига для одинарных кавычек - person Félix Adriyel Gagnon-Grenier; 30.07.2015

Вы обрабатываете 1000 строк в секунду? Если нет, то не стоит слишком беспокоиться.

Используйте двойные кавычки, если вы хотите использовать интерполяцию строк (с переменными, математикой и т. д.)

Вы также должны стараться быть последовательными.

Мы должны забыть о малой эффективности, скажем, примерно в 97% случаев: преждевременная оптимизация — корень всех зол.

Дональд Кнут

person alex    schedule 02.02.2011
comment
Вы также должны стараться быть последовательными... +1 за этот лакомый кусочек. - person sberry; 02.02.2011
comment
Чтобы быть последовательным, я часто пишу код типа «у меня есть». $ количество . 'вещи' . \n .. но это кажется более грязным, чем у меня есть $количество вещей\n. Я думаю, это не имеет большого значения, пока вы можете прочитать это позже. - person cornernote; 16.04.2015

Посмотрите на сравнение производительности двойных (") и одинарных (') кавычек для строк @ phpbench.

Вывод: "В сегодняшних версиях PHP похоже, что этот аргумент был удовлетворен по обе стороны линии. Давайте все объединимся в гармонии в этой!"

person Marcin    schedule 02.02.2011
comment
+1. Мне пришлось выслушать двух других разработчиков, которые рассказали мне, как использование одинарных кавычек так важно для производительности. Я написал свой собственный тестовый сценарий, чтобы показать им, насколько незначительной была эта разница. Я имею в виду, микросекунды... да ладно. Приятно иметь эту ссылку тоже. - person sberry; 02.02.2011
comment
@ sberry2A, вы так же неправы, как и Марчин со своей скамейкой php. Вместо написания собственного скрипта бенчмаркинга вы должны были профилировать свой код и найти то, что действительно важно для производительности. этот язык действительно страдает от разработчиков-любителей. - person Your Common Sense; 02.02.2011

Что касается скорости, единственный правильный ответ: это вообще не должно вас беспокоить. Период. Разница, если вы ее даже найдете, не имеет никакого значения. Чтобы заботиться о скорости, нужно понимать всю картинку, а не один ее пиксель. Сделать ваше приложение быстрее и эффективнее — большая и сложная задача. Но этого нельзя сделать, задавая вопросы «что быстрее». Если вы действительно обеспокоены этим, начните с изучения того, что такое профилирование.

Что касается преимуществ, то лучше всего изучить их на странице руководства: http://php.net/types.string
На самом деле это не преимущества, а скорее варианты использования.

person Your Common Sense    schedule 02.02.2011
comment
Я согласен с тем, что упреждающие оптимизации, как правило, плохи, и что разница в скорости между строками с одинарными и двойными кавычками довольно мала. Но даже небольшие различия могут иметь значение при правильном сценарии, и я думаю, вы забываете, что некоторые люди, которые задают этот вопрос, могут столкнуться с таким сценарием. - person HardlyNoticeable; 11.01.2020

Если обработка текста внутри не требуется, то single работает быстрее.

person HiTCHO    schedule 02.02.2011
comment
Я не знаю, почему за это проголосовали. Это единственный фактически правильный ответ на заданный вопрос. Каждый другой ответ говорит, что это не имеет значения, что, хотя и верно, не отвечает на вопрос. - person dev_row; 12.07.2013
comment
Также имейте в виду, что этот ответ, вероятно, ссылается на PHP 5.2, где разница в производительности была более выраженной. В › 5.3 мы говорим о разнице во времени менее процента в большинстве случаев. - person dev_row; 12.07.2013

одинарная кавычка, как правило, быстрее, и все, что цитируется внутри, рассматривается как простая строка,

как

echo 'anyting else ? $something';
>> anything else? $something

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

Однако, по сравнению с двойной кавычкой, PHP заменит $something присвоенным ему значением.

$something = 'yup';
echo "anyting else ? $something";
>> anything else ? yup
person ajreal    schedule 02.02.2011
comment
Даже строки в одинарных кавычках требуют некоторой интерпретации... строка с ' или \ в ней, даже в одинарных кавычках, подлежит интерпретации для правильной обработки этих символов... и нет заметной разницы в скорости. - person Mark Baker; 02.02.2011
comment
Возможно, это было так, когда был дан этот ответ, но сегодня разница между одинарными и двойными кавычками с точки зрения производительности незначительна, если только вы не имеете дело с миллионами строк в цикле. - person GordonM; 19.02.2015