资讯专栏INFORMATION COLUMN

原来PHP对象比数组用更少的内存

番茄西红柿 / 1042人阅读

摘要:一直以为的数组更节省内存,从来没有测试过,今天因为要读取一个大配置文件作为。做了一次测试得出结论是使用对象保存数据更好,花费的内存是数组的。

一直以为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

相关文章

  • JavaScript代码风格要素

    摘要:删除不必要的代码。而简化前的代码包含的语法要素对于传达代码意义本身作用并不大。删除不必要的代码有时候,我们试图为不必要的事物命名。例如,大多数情况下,你应该省略仅仅用来当做返回值的变量。你的函数名应该已经说明了关于函数返回值的信息。 原文地址 本文已在前端早读课公众号首发:【第952期】JavaScript代码风格要素 译者:墨白 校对:野草 1920年,由威廉·斯特伦克(Will...

    YPHP 评论0 收藏0
  • 影响数据检索效率的几个因素

    摘要:数据检索有两种主要形态。所以,回归本质,影响数据检索效率的就那么几个因素。数据检索干的是什么事情定位加载变换找到所需要的数据,把数据从远程或者磁盘加载到内存中。减少的数据量的两个手段,聚合和抽样。 数据检索有两种主要形态。第一种是纯数据库型的。典型的结构是一个关系型数据,比如 mysql。用户通过 SQL 表达出所需要的数据,mysql 把 SQL 翻译成物理的数据检索动作返回结果。第...

    rollback 评论0 收藏0
  • PHP的性能优化方法总结

    摘要:内置函数的性能优劣。产生额外开销的错误抑制符号,最好别用不管是性能优化和项目的健壮性等方面。在方法中递增局部变量,速度是最快的。类似的方法调用所花费的时间接近于次的局部变量递增操作。 什么情况之下,会遇到PHP性能问题?1:PHP语法使用不恰当。2:使用PHP语言做了它不擅长的事情。3:使用PHP语言连接的服务不给力。4:PHP自身的短板(PHP自身做不了的事情)。5:我们也不知道的问...

    gekylin 评论0 收藏0
  • apache与nginx

    摘要:大型网站建议用自代的集群功能从个人过往的使用情况来看,的负载能力比高很多。最新的服务器也改用了。你对的需求决定你的选择。在模式下,如果处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。 1、nginx相对于apache的优点: 轻量级,同样起web 服务,比apache占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的...

    tyheist 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<