PHP对数组内存的零散管理特点
来源:互联网 发布:网络直播背后的思考 编辑:程序博客网 时间:2024/05/22 15:53
PHP作为一门解释型的脚本语言,虽然从执行效率上比静态语言有一些差距,但是自身有很多有趣且实用的特点。
今天我们就来看一看PHP对数组内存的管理与C++等静态语言的区别。
我们先来看下面一段code
<?phpecho memory_get_usage();$arr=array();$arr[0]=5;echo memory_get_usage();$arr[200000]=5;echo memory_get_usage();?>执行结果如下
248520248944249072分析
大家可以看到为索引为200000的元素赋值并没有导致内存消耗的激增。
从而说明PHP对数组内存的管理具有零散的特点。
它并不会像C++一样开辟一个数组需要事先定义好数组数量,并开辟容纳所有元素的整片内存。
PHP这样的特点有何实用价值
我们拿查找N度人脉的功能作为一个例子。
求N度人脉实际上是利用矩阵求解关系的传递闭包。第i度的人脉矩阵需要依靠第i-1度的人脉矩阵计算得出。
一个存储10万人的关系需要100000*100000*sizeof(char)大小的矩阵。
在计算峰值时需要在内存中同时存储2个这样大小的二维数组,这无疑对内存的消耗很大。
不过关系矩阵有2个显著的特点:
1、它是一个对称型矩阵(这意味着我们只关注矩阵对角线的半边)
2、它是一个稀疏矩阵(这意味着我们只关注那些为1的值)
如何避免开辟那些我们不关心的值得内存,从而使得程序的内存使用率大大降低呢?
这个问题利用C++解决可能还不是那么容易,但是利用PHP对数组内存的零散管理的特点就迎刃而解了。
PHP如何实现该特点的推测
PHP中的每一个声明的数组其实是某一数据类型指针的Map,当然这仅仅是推测,未经证实。
0 0
- PHP对数组内存的零散管理特点
- ARC内存管理的基本特点
- 数组的内存管理
- php的内存管理
- php函数(零散的笔记)
- ★ Java内存管理特点
- Java数组的内存管理
- [javase学习笔记]-5.2 数组的内存分配及特点
- php全局变量的内存管理
- 45-PHP的内存管理
- php管理数组的函数
- 第[4天] 数组——数组的定义、数组内存的分配及特点
- PHP 脚本的特点
- OpenSIPS有自己的内存分配器,服务器内存分配及管理的特点
- 对Linux内存管理的思考
- 对Linux内存管理的整体理解
- 对cocos2d内存管理的一些理解
- 对X86内存管理架构的总结
- PhotoSwipe动态加载图片
- Codeforces #219 (Div. 2) C. Counting Kangaroos is Fun
- 贪财的富翁
- CXF客户端调用?wsdl webservice接口开发
- 【指针】指向数组的指针--(课堂例)为什么p=a不对?
- PHP对数组内存的零散管理特点
- c语言学生信息管理系统(基于文件、链表)
- Linux与时间相关的结构体及相关用法
- CSS @font-face(CSS 自定义字体)
- java 里面出现的 premGen space 的错误
- FORM开发中Profiles的使用
- ListView中根据手机屏幕高度动态设置只显示一屏幕的item个数
- 改变Linux文件夹默认的深蓝色字体
- Java图片上传压缩处理