Строка массива php или строка var?

Я разбираюсь с некоторыми строками в php, чтобы создать свой собственный фреймворк …
Есть кое-что, что «беспокоит» меня.

$var = "hello!";

$arr = array("h","e","l","l","o","!");

Может кто-нибудь сказать мне, какой ($var или же $arr) использует больше памяти, чем другой? И почему?

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

0

Решение

Массив будет использовать больше памяти, чем строка

Строка и массив сами по себе являются структурами zval, но каждый элемент массива также является строкой, каждый со своим собственным zval; массивы занимают удивительное количество памяти. Существует также тот факт, что элемент массива содержит и ключ, и значение, каждое из которых использует память

Прочитайте это статья чтобы увидеть, сколько памяти используется структурой массива

3

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

Массив занимает (много!) Больше памяти.

Строка в PHP — это объект в памяти, который содержит (например) длину и указатель на фактические данные в памяти. Я думаю, что на большинстве платформ это дает вам 32 бита для длины и 64 бита для указателя. С 16-байтовыми требованиями выравнивания от некоторых процессоров это означает, что каждая строка будет по крайней мере 32 байта (дескриптор + фактические данные) — даже если это будет только один символ.

Массив из вашего примера содержит 6 строк. Это будет 192 байта плюс затраты на хранение массива, что также немаловажно (рассчитывайте как минимум на 128 байтов).

Отказ от ответственности: числа, используемые в этом ответе, являются приблизительным приближением — ожидайте намного больше накладных расходов, чем упомянуто здесь.

2

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