Влияет ли использование меньшего количества переменных на производительность в PHP? - PullRequest
1 голос
/ 13 декабря 2011

Есть ли разница между производительностью и ресурсами между этими двумя?

$a = "foo bar";
$b = substr($a,-3);
if ($b == "bar")
{
      echo "bar!!";
}

и

if (substr($a = "foo bar", -3) == "bar")
{
      echo "bar!!";
}

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

Мне бы хотелось увидеть, как эти два теоретически и практически различаются, следует ли избегать ненужных присвоений переменных?

Ответы [ 3 ]

4 голосов
/ 13 декабря 2011

Единственная разница (помимо разницы в AST и / или байт-коде) заключается в том, что когда вы делаете $b = substr($a, -3), вы сохраняете возвращенную строку в $b до тех пор, пока $b не выйдет из области видимости, тогда ссылка будет освобожденаи тогда строка может быть собрана сборщиком мусора.

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

Будет ли это иметь значение для вас?Нет. Не принимайте это во внимание, потому что невозможно переоценить, насколько она маленькая.Код для наглядности.

1 голос
/ 13 декабря 2011

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

0 голосов
/ 13 декабря 2011

В этом случае ваши волосы просто расщепляются. Так что нет, это не имеет значения.

Кроме того, если вы находитесь в области действия функции, то переменные просто соберут мусор после того, как функция вернется.

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