Как я могу вернуть выделение памяти для массива в php?

Я хотел бы знать, сколько байтов массив выделяется в памяти.

$array = range(0,1000000000);
echo count($array);            // returns number of rows in array (1B);
echo sizeof($array);           // alias of count();

Как я могу сделать что-то вроде этой работы?

echo memory_allocated_to_array($array);

Вот предположение, основанное на memory_get_usage():

$start_bytes = memory_get_usage();
$array = range(0,1000000000);
$end_bytes = memory_get_usage();
$array_bytes = ($end_bytes - $start_bytes);
echo $array_bytes;

Но я подозреваю, что это очень неточно, когда запущено несколько процессов (каждый со своими требованиями к памяти).

1

Решение

На данный момент это лучший ответ, о котором я знаю (как упомянуто в вопросе выше), но я с готовностью поддержу и приму лучшие ответы.

$start_bytes = memory_get_usage();
$array = range(0,1000000000);
$end_bytes = memory_get_usage();
$array_bytes = ($end_bytes - $start_bytes);
echo $array_bytes;
1

Другие решения

Изменить: я изменил ответ:

$startMemory = memory_get_usage();
$array = range(1, 100000);
echo memory_get_usage() - $startMemory, ' bytes';

С уважением.

Изменить 2:

Также попробуйте это:

$startMemory = memory_get_usage();
$array = new SplFixedArray(100000);
for ($i = 0; $i < 100000; ++$i) {
$array[$i] = $i;
}
echo memory_get_usage() - $startMemory, ' bytes';

http://php.net/SplFixedArray

0

По вопросам рекламы [email protected]