Возвращаемое значение в сравнении с передачей ссылки на объект - PullRequest
2 голосов
/ 30 апреля 2011

В какой-то момент кто-то предложил мне, что медлительность в моем PHP-скрипте могла быть отчасти потому, что я возвращал большой массив из функции. Вместо этого он предложил передать ссылку на объект в функцию и заставить функцию работать непосредственно с массивом.

Если это имеет существенное значение, я планирую изменить стиль своей функции, чтобы она возвращала массив информации о выполнении функции (эталонный тест времени, попытки и т. Д.) И вместо этого работала непосредственно со ссылкой на объект.

Так что ты думаешь?

1 Ответ

6 голосов
/ 30 апреля 2011

Нет, это не имеет никакого значения.

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

PHP выполняет большую оптимизацию в отношении указателей, ссылок и обработки переменных,Не думайте, что вы можете легко перехитрить его, PHP слишком высокоуровневый для этого.Напиши, что ты имеешь в виду.И как всегда: профиль , чтобы найти настоящие узкие места.

...