zoukankan      html  css  js  c++  java
  • 原来PHP对象比数组用更少的内存

    一直以为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://segmentfault.com/a/1190000016060455

  • 相关阅读:
    数据库面试题
    MySQL表的导入
    MySQL表的导出
    MySQL安装mydumper
    MySQL中的日志
    动态数组实现下压栈
    动态数组
    设计模式之迭代器
    设计模式之组合模式
    设计模式之状态模式
  • 原文地址:https://www.cnblogs.com/lalalagq/p/9974942.html
Copyright © 2011-2022 走看看