PHP数组实际占用内存大小原理解析

来源:脚本之家 时间:2020-12-14

这篇文章主要介绍了PHP数组实际占用内存大小原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一般来说,PHP数组的内存利用率只有 1/10, 也就是说,一个在C语言里面100M 内存的数组,在PHP里面就要1G。下面我们可以粗略的估算PHP数组占用内存的大小,首先我们测试1000个元素的整数占用的内存:

<?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 '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 中整体只需要 4k(一个整型占用4byte * 1000 )。memory_get_usage() 返回的结果并不是全是被数组占用了,还要包括一些 PHP 运行本身分配的一些结构,可能用内置函数生成的数组更接近真实的空间:

项目推荐

A5创业网 版权所有

返回顶部