передав по значению, функция работает с локальной копией массива, а передав по ссылке - с тем же самым массивом. чтобы избежать затрат на создание большой копии массива, думаю, стоит передавать по ссылке, так ведь?
абсолютно пофигу (если правда, что "функция использует его для работы, не изменяя его совсем"), т.к. в php применяется принцип COW (copy on write) при передаче переменных, да и при присвоении
Автор оригинала: Profic
абсолютно пофигу (если правда, что "функция использует его для работы, не изменяя его совсем"), т.к. в php применяется принцип COW (copy on write) при передаче переменных, да и при присвоении
$first = str_repeat('0',1024*1024);
// использование памяти повысилось на 1 мб с копейками
$second = $first;
// использование памяти на копейки повысилось
$second .= '0';
// использование памяти повысилось на 1 мб с копейками
Т.е. при передаче/присвоении даже без ссылки, значение не копируется, а делается ссылка, а в момент когда мы изменяем значение делая например:
PHP:
$second .= '0';
Происходит копирование и изменение. Это и называется COW (Copy On Write), это сделано в целях экономии памяти.