unset vs. = NULL

Возможный дубликат:
Что лучше для освобождения памяти с помощью 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:

  • занял 0.88389301300049 секунд
  • принял 2.1757180690765 секунд

Результаты PHP 5.3:

  • взял 1.7235369682312 секунд
  • заняло 2.9490959644318 секунд

Результаты PHP 5.2:

  • взято 3.0069220066071 секунд
  • заняло 4.7002630233765 секунд

Результаты PHP 5.1:

  • заняло 2,6272349357605 секунд
  • принял 5.0403649806976 секунд

С PHP 5.0 и 4.4 все начинает выглядеть иначе.

5,0:

  • заняло 10.038941144943 секунды
  • взял 7.0874409675598 секунд

4,4:

  • взято 7.5352551937103 секунды
  • заняло 6.6245851516724 секунды

Имейте в виду, что microtime (true) не работает в PHP 4.4, поэтому мне пришлось использовать пример microtime_float, указанный в php.net/microtime / Example # 1.

Прочтите выбранный ответ более тщательно:

Если вы делаете $ any = null; то вы переписываете данные переменной. Вы могли бы освободить память / сократиться быстрее, но она может украсть циклы процессора из кода, который действительно нуждается в них раньше, что приведет к более длительному общему времени выполнения.

Итак, если все, что вы делаете, это материал памяти, да, это будет быстрее. Но в реальном приложении вы можете обнаружить, что это замедляет работу.