摘要:一直以为的数组更节省内存,从来没有测试过,今天因为要读取一个大配置文件作为。做了一次测试得出结论是使用对象保存数据更好,花费的内存是数组的。
一直以为php的数组更节省内存,从来没有测试过,今天因为要读取一个大配置文件作为pool。做了一次测试;
得出结论是 使用对象保存数据更好,花费的内存是数组array的1/4。
测试代码
class obj { public $name; public $id; public function __construct($id,$name) { $this->name = $name; $this->id = $id; } } $max = 10000; $old = memory_get_usage(); for ($i=0;$i<$max;$i++){ $arrayList[] = [$i,$max]; } $new = memory_get_usage(); echo "{$max}个数组(默认key)内存消耗".($new-$old)." "; $old = memory_get_usage(); for ($i=0;$i<$max;$i++){ $arrayList[] = ["id"=>$i,"name"=>$max]; } $new = memory_get_usage(); echo "{$max}个数组(和对象可以互相转换的)内存消耗".($new-$old)." "; $old = memory_get_usage(); for ($i=0;$i<$max;$i++){ $objectList[] = new obj($i,$max); } $new = memory_get_usage(); echo "{$max}个对象内存消耗".($new-$old)." ";
结果
10000个数组(默认key)内存消耗 4288440 10000个数组(和对象可以互相转换的)内存消耗 4284288 10000个对象内存消耗 1451320
大概比例
array:object = 4:1
越是复杂的数组,用过同等对象保存,内存小更多
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/29254.html
摘要:删除不必要的代码。而简化前的代码包含的语法要素对于传达代码意义本身作用并不大。删除不必要的代码有时候,我们试图为不必要的事物命名。例如,大多数情况下,你应该省略仅仅用来当做返回值的变量。你的函数名应该已经说明了关于函数返回值的信息。 原文地址 本文已在前端早读课公众号首发:【第952期】JavaScript代码风格要素 译者:墨白 校对:野草 1920年,由威廉·斯特伦克(Will...
摘要:数据检索有两种主要形态。所以,回归本质,影响数据检索效率的就那么几个因素。数据检索干的是什么事情定位加载变换找到所需要的数据,把数据从远程或者磁盘加载到内存中。减少的数据量的两个手段,聚合和抽样。 数据检索有两种主要形态。第一种是纯数据库型的。典型的结构是一个关系型数据,比如 mysql。用户通过 SQL 表达出所需要的数据,mysql 把 SQL 翻译成物理的数据检索动作返回结果。第...
摘要:内置函数的性能优劣。产生额外开销的错误抑制符号,最好别用不管是性能优化和项目的健壮性等方面。在方法中递增局部变量,速度是最快的。类似的方法调用所花费的时间接近于次的局部变量递增操作。 什么情况之下,会遇到PHP性能问题?1:PHP语法使用不恰当。2:使用PHP语言做了它不擅长的事情。3:使用PHP语言连接的服务不给力。4:PHP自身的短板(PHP自身做不了的事情)。5:我们也不知道的问...
摘要:大型网站建议用自代的集群功能从个人过往的使用情况来看,的负载能力比高很多。最新的服务器也改用了。你对的需求决定你的选择。在模式下,如果处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。 1、nginx相对于apache的优点: 轻量级,同样起web 服务,比apache占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的...
阅读 685·2023-04-25 19:43
阅读 3857·2021-11-30 14:52
阅读 3731·2021-11-30 14:52
阅读 3797·2021-11-29 11:00
阅读 3747·2021-11-29 11:00
阅读 3814·2021-11-29 11:00
阅读 3530·2021-11-29 11:00
阅读 6011·2021-11-29 11:00