class c5 {
var $a1 = 1;
var $a2 = 2;
var $a3 = 3;
var $a4 = 4;
var $a5 = 5;
var $a6 = 6;
var $a7 = 7;
var $a8 = 8;
var $a9 = 9;
var $a10 = 10;
}
class c6 {
var $a1 = array(
'a1'=>1,
'a1'=>2,
'a1'=>3,
'a1'=>4,
'a1'=>5,
'a1'=>6,
'a1'=>7,
'a1'=>8,
'a1'=>9,
'a1'=>10);
}
new 10000個結果:
C5: 7297.2/7297.3 (kb)
C6: 2766.0/2766.1 (kb)
結論:
初始物件屬性佔用的記憶體與數量有關, 但與內容大小無關.
猜測PHP使用 copy on write 技術, 若內容沒有改變,
所有new出來的物件該屬性會指向相同的位址,
並不會額外配置記憶體,
除非後來修改該內容會另外複製一份記憶體.
此結論推翻先前的建議,
亦即若ORM中的Model屬性永遠不變, 例如(一對多的結構設定),
則額外的記憶體成本很低.