Есть ли какая-то польза от сброса массива перед его повторным выделением?

По вашему мнению, если бы у меня был массив из 100 000 записей из 8-символьных строк, было бы лучше использовать память для unset($array) сначала, а затем переопределить его как $array = []; или просто переопределить его ($array = [];)?

Спасибо!

6

Решение

Все выходит одинаково. Перезапись «старого» массива НИЧЕГО новым приведет к тому, что старый массив (со временем) будет собирать и удалять мусор из системы. Делаете ли вы это в два этапа:

unset($arr); // force delete old array
$arr = [];   // create new array

или просто

$arr = []; // replace old array with new empty one

в основном сводится к тому же: старый массив в конечном итоге будет очищен.

8

Другие решения

В то время как Марк Бответ абсолютно правильно, я хотел увидеть для себя на основе Даанкомментарий.

С помощью memory_get_usage() Я сделал быстрый тест между unset() а также переопределение. Оба одинаково уменьшили память.

unset()

$arr = array_fill(0, 1000000, 'abcdefgh'); // memory: 96613552
unset($arr);                               // memory:   224856

переопределение

$arr = array_fill(0, 1000000, 'abcdefgh'); // memory: 96613552
$arr = [];                                 // memory:   224856
3

По вопросам рекламы [email protected]