использование памяти массивом

Foshvad

Guest
использование памяти массивом

Есть массив. Например $menu;
Можно ли, и если можно, то как, оценить объем памяти, которое он (массив) занимает.
 

AnToXa

prodigy-одаренный ребенок
Re: использование памяти массивом

Автор оригинала: Foshvad
Есть массив. Например $menu;
Можно ли, и если можно, то как, оценить объем памяти, которое он (массив) занимает.
можно, если в исходники залезть и покопаться
навскидку

zend_hash.c
zend_dynamic_array.c
zend_alloc.c
 

Sashenka

Guest
Re: использование памяти массивом

Автор оригинала: Foshvad
Есть массив. Например $menu;
Можно ли, и если можно, то как, оценить объем памяти, которое он (массив) занимает.
есть функция,которая подсчитывает кол-во эл-ов в массиве.Полученное число умножаешь на кол-во памяти 1 эл-та(правда если там в перемешку числа и строки-то непойдёт)
 

f1

formula 1
Re: Re: использование памяти массивом

Автор оригинала: Sashenka

есть функция,которая подсчитывает кол-во эл-ов в массиве.Полученное число умножаешь на кол-во памяти 1 эл-та(правда если там в перемешку числа и строки-то непойдёт)
неужели?
Ты знаешь как php использует память под массивы?
а если массив ассоциативный.
 

Sashenka

Guest
Re: Re: Re: использование памяти массивом

Автор оригинала: f1

неужели?
Ты знаешь как php использует память под массивы?
а если массив ассоциативный.
ну даже если ассоциативный...Человеку скорее всего нужна приблизительная оценка.Ну не рыться же из-за этого в исходниках
 

AnToXa

prodigy-одаренный ребенок
только не забудте умножить цифру на 2(ну ладно :) на полтора ), при вычислении по методу f1
 

f1

formula 1
Re: Re: Re: Re: использование памяти массивом

Автор оригинала: Sashenka

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

Sashenka

Guest
Re: Re: Re: Re: Re: использование памяти массивом

Автор оригинала: f1

приблизительная оценка не может быть с ошибкой в несколько раз,
а в случае оценки таким методом размера ассоциативных массивов, вероятно, именно такой результат ты и получишь :)
объясни,пожалуйста,почему в несколько раз:confused:
 

f1

formula 1
Re: Re: Re: Re: Re: Re: использование памяти массивом

Автор оригинала: Sashenka

объясни,пожалуйста,почему в несколько раз:confused:
например
$arr = array('first'=>'a','second'=>'b');

по твоей методе, занимает 2 байта,
хотя очевидно, что меньше 13 он занимать не может :)
 

Demiurg

Guest
Re: Re: Re: Re: Re: Re: использование памяти массивом

Автор оригинала: Sashenka

объясни,пожалуйста,почему в несколько раз:confused:
предположим php хранит каждую переменную в 3 местах, для оптимизации по времени, вот тебе и несколько раз.
 

AnToXa

prodigy-одаренный ребенок
Re: Re: Re: Re: Re: Re: Re: использование памяти массивом

Автор оригинала: Demiurg

предположим php хранит каждую переменную в 3 местах, для оптимизации по времени, вот тебе и несколько раз.
эй :))) не гони :)))
не хранит она так ничего и никогда для оптимизации по времени... :)

там есть такие штуки как указатели, они разыменовываются и все :))
 

Demiurg

Guest
Re: Re: Re: Re: Re: Re: Re: Re: использование памяти массивом

Автор оригинала: AnToXa

эй :))) не гони :)))
не хранит она так ничего и никогда для оптимизации по времени... :)

там есть такие штуки как указатели, они разыменовываются и все :))
Я же просто предположил :)
 

vovik

Guest
всё зависит от того, с какой точностью нужна оценка :)

можно например так:
PHP:
strlen(serialize($array));
это далеко не точно, зато коротко :)
думаю лучше, чем количество элементов умножить на первый :)
особенно, если элементы большие ...
 
Сверху