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