Возможный дубликат:
Что лучше для освобождения памяти с помощью PHP: unset () или $ var = null
Этот вопрос сортируется следующим образом: Что лучше для освобождения памяти с помощью PHP: unset () или $ var = null
Короче говоря, мои собственные тесты, похоже, противоречат ответу, данному в этом вопросе. Мой вопрос … почему? Является ли ответ неправильным или есть что-то, что я просто не понимаю?
<?php $start = microtime(true); for ($i = 0; $i < 10000000; $i++) { $a = 'a'; $a = NULL; } $elapsed = microtime(true) - $start; echo "took $elapsed seconds\r\n"; $start = microtime(true); for ($i = 0; $i < 10000000; $i++) { $a = 'a'; unset($a); } $elapsed = microtime(true) - $start; echo "took $elapsed seconds\r\n"; ?>
По тому, что это похоже на «= null», происходит быстрее.
Результаты PHP 5.4:
Результаты PHP 5.3:
Результаты PHP 5.2:
Результаты PHP 5.1:
С PHP 5.0 и 4.4 все начинает выглядеть иначе.
5,0:
4,4:
Имейте в виду, что microtime (true) не работает в PHP 4.4, поэтому мне пришлось использовать пример microtime_float, указанный в php.net/microtime / Example # 1.
Прочтите выбранный ответ более тщательно:
Если вы делаете $ any = null; то вы переписываете данные переменной. Вы могли бы освободить память / сократиться быстрее, но она может украсть циклы процессора из кода, который действительно нуждается в них раньше, что приведет к более длительному общему времени выполнения.
Итак, если все, что вы делаете, это материал памяти, да, это будет быстрее. Но в реальном приложении вы можете обнаружить, что это замедляет работу.