今天主要聊聊关于PHP数组实际占用存储器大小原理解析,通过示例代码详细介绍,对大家学习或工作或许有一定的参考和学习价值,有需要的朋友可以参考下
一般而言, PHP阵列的内存利用率只有1/10,即 C语言中100 M的阵列在 PHP中使用1 G。从测试1000个元素的整数所占用的内存开始,我们就可以大致估算 PHP数组所使用的内存:
<?php
echo memory_get_usage() , '<br>';
$start = memory_get_usage();
$a = Array();
for ($i=0; $i<1000; $i++) {
$a[$i] = $i + $i;
}
$mid = memory_get_usage();
echo memory_get_usage() , '<br>';
for ($i=1000; $i<2000; $i++) {
$a[$i] = $i + $i;
}
$end = memory_get_usage();
echo memory_get_usage() , '<br>';
echo 'www.66018555.com argv:', ($mid - $start)/1000 ,'bytes' , '<br>';
echo 'argv:',($end - $mid)/1000 ,'bytes' , '<br>';
输出是:
353352
437848
522024
argv:84.416bytes
argv:84.176bytes
大概了解下对于1000个元素的整数阵列来说,占用82k内存,每个元素平均占用84字节。纯净的 C语言只需4 k (1个完整的 byte*1000)。memory_get_usage ()()返回的结果并非全部由数组占据,其中还包括一些 PHP运行本身分配的结构,这些结构可能使用内建函数生成的数组更接近实际空间。