Почему простой тест памяти PHP unset () использует вдвое больше памяти в PHP 5.3? - PullRequest
4 голосов
/ 29 апреля 2011

Я проверял, влияет ли unset () на память во время работы скрипта, чтобы выяснить, эффективнее ли $ var = null, если unset () или другой известный метод.unset () влияет на память, но, поскольку я тестировал ее на двух разных виртуальных хостах, я удивился, почему один из них использует более или менее в два раза больше памяти для одного и того же скрипта?Я предполагаю, что ответ является чем-то простым, но он ускользает от меня в данный момент.Сам скрипт ниже:

<?php

$init=memory_get_usage();
$test=array();
for($i=0;$i<=100000;$i++){
    $test[$i]=rand(0,10000000);
}
echo 'MEMORY CHANGE: '.((memory_get_usage()-$init)/1024/1024).'MB<br/>';

for($i=0;$i<=100000;$i++){
    unset($test[$i]);
}
echo 'MEMORY CHANGE: '.((memory_get_usage()-$init)/1024/1024).'MB<br/>';

//output on PHP 3.2.5 virtualhost:
//MEMORY CHANGE: 6.98558807373MB
//MEMORY CHANGE: 0.500259399414MB

//output on PHP 5.3.5 virtualhost
//MEMORY CHANGE: 13.970664978MB
//MEMORY CHANGE: 1.00063323975MB

?>

Спасибо!

1 Ответ

3 голосов
/ 29 апреля 2011

PHP 3.2.5? Это так старо, что даже не достигает каменного века. Сильные стороны PHP были полностью переписаны с помощью движка Zend, поэтому, хотя сам язык оставался относительно одинаковым, вы сравниваете две разные среды.

Но если этот номер версии опечатка, то, возможно, это 32-битная версия. 64-битный хост, который удваивает размер целых и может учесть вашу предполагаемую разницу в 2 раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...