1. 程式人生 > >原來PHP物件比陣列用更少的記憶體

原來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)."\n";

$old = memory_get_usage();
for ($i=0;$i<$max;$i++){
    $arrayList[] = ["id"=>$i,"name"=>$max];
}
$new = memory_get_usage();
echo "{$max}個數組(和物件可以互相轉換的)記憶體消耗".($new-$old)."\n";

$old = memory_get_usage();
for ($i=0;$i<$max;$i++){
    $objectList[] = new obj($i,$max);
}
$new = memory_get_usage();
echo "{$max}個物件記憶體消耗".($new-$old)."\n";

結果


10000個數組(預設key)記憶體消耗             4288440
10000個數組(和物件可以互相轉換的)記憶體消耗  4284288
10000個物件記憶體消耗                      1451320

大概比例


array:object = 4:1

越是複雜的陣列,用過同等物件儲存,記憶體小更多

原文地址:https://segmentfault.com/a/1190000016060455