На этапе оптимизации было бы разумно передать весь массив по ссылке? - PullRequest
2 голосов
/ 02 декабря 2009

В PHP, когда мы подходим к фазе оптимизации приложения (я говорю о приложении, которое обрабатывает сотни тысяч пользователей), было бы разумно передать все массивы (где я не против того, что с ними происходит после Я передаю их функции) по ссылке?

Ответы [ 3 ]

5 голосов
/ 02 декабря 2009

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

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

Иногда самые странные фрагменты кода занимают большую часть времени выполнения, и, не зная точно, где находятся узкие места, вы можете тратить много времени на оптимизацию 0,01% времени выполнения.

1 голос
/ 02 декабря 2009

Массивы PHP имеют семантику копирования при записи. Это означает, что новая память не выделяется для нового массива, пока он не будет изменен. Например:

$a = array(1,2,3);
$b = $a; // $b points to the same memory locations as $a
$b[1] = 4; // $b is copied and the modification is performed

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

Это означает, что нет никакой пользы от передачи массивов в качестве ссылок. Не делай этого.

0 голосов
/ 02 декабря 2009

В этой статье http://derickrethans.nl/files/phparch-php-variables-article.pdf предполагается, что предложенная оптимизация не будет иметь никакого значения, учитывая способ реализации массивов, и может фактически замедлить процесс.

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