LINUX.ORG.RU

Что деалет PHP в свободное время?


0

1

Есть скрипт:

<?
	$arr = array();
	for ($i = 0; $i < 50000001; ++$i)
		$arr['a$i'] = true;

	$start = microtime(true);
	$b = isset($arr['a510000000']);
	echo microtime(true) - $start;

	$arr2 = array();
	for ($i = 0; $i < 50000001; ++$i)
		$arr[$i] = 'a$i';

	$start = microtime(true);
	$b = in_array('a510000000', $arr2);
	echo microtime(true) - $start;
?>

Выполняю через `php ./script.php`

Первые 10 секунд он висит без вывода, видимо, заполняет первый массив. Потом выплёвывает время поиска в массиве через isset. Потом снова 10 секунд висит, видимо, заполняя второй массив. Потом выплёвывает время поиска через in_array.

А вот что скрипт делает потом в течение почти полминуты?

Ответ на: комментарий от AndreyKl

А посаны, в демоне понятно — получили ресурс, что-то сделали, освободили.

Но если конец скрипта, нафиг что-то высвобождать? По завершению процесса это не имеет смысла.

anonymous
()

А вот что скрипт делает потом в течение почти полминуты?

собирает дерьмо, что высрал.

emulek
()
Ответ на: комментарий от anonymous

Но если конец скрипта, нафиг что-то высвобождать? По завершению процесса это не имеет смысла.

вообще-то скрипт об этом не в курсе. Массив вышел из области видимости, и память ДОЛЖНА БЫТЬ освобождена.

emulek
()
Ответ на: комментарий от AndreyKl

наверное у тебя свопится там всё, как подсказали выше.

там и без свопа будет МНОГО — он 50М выделяет {key,value}, причём ключи у него строковые и разной длинны.

emulek
()
Ответ на: комментарий от anonymous

Кривой интерпретатор значит.

что ты хотел от чистого интерпретатора? В смысле без vm.

emulek
()
Ответ на: комментарий от anonymous

ну как сказать, система ведь всё равно освобождает ресурсы, даже если скрипт этого не сделает.

AndreyKl ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.