Предположим, что у меня есть две переменные и они равны null
. (Более реалистично, я думаю о массиве, который содержит большое количество null
s, но сценария «двух переменных» достаточно для вопроса.) Очевидно, что я могу сделать это более чем одним способом. Я могу сделать это (метод 1):PHP null и copy-on-write
$a = null;
$b = $a;
По моему разумению, результатом этого является то, что есть один Zval, который указывает две записи в таблице символов: 'a'
и 'b'
. Но в качестве альтернативы можно было бы сделать это (метод 2):
$a = null;
$b = null;
Наивно можно было бы ожидать, что это должно привести к двум различным zvals, каждый указал на одну запись в таблице символов.
ли из этого следует, что если вы хотите иметь большой массив, и многие элементы массива будут null
, это более эффективно (с точки зрения ZVAL/использования памяти), чтобы создать $master_null
переменную со значением null
, а затем записать элементы null
массива, назначив с помощью $master_null
?
Почему бы просто не попробовать? Кажется достаточно простым. – Halcyon
@Frits: Я не знаю, как определить, какие zvals существуют из скрипта. Поведение PHP в каждом случае одинаково; внутренняя разница скрыта от пользователя. – Hammerite
Но эффективные свойства памяти не будут скрыты от вас. Это то, что вы хотите знать правильно? – Halcyon