2012-03-20 46 views

回答

2

存儲在獨立的存儲器單元陣列中的每個元素,你也需要存儲的哈希表爲陣,與鑰匙一起,所以NOOOO,這將是一個很多更多。

1

編號PHP的內部元數據附加到每個定義的變量/數組元素。 PHP不直接支持位字段,所以最小的ACTUAL分配是一個字節,加上元數據開銷。

1

我懷疑是否有一個應用程序使用少於系統arcitecture的數據word作爲最小的數據存儲單元。

但我相信它不應該是你的關注。

1

這取決於PHP解釋器。標準的解釋器是非常浪費的,雖然這對於動態語言來說並不罕見。大量的開銷是由垃圾收集和每個值的動態性引起的;由於數組的內容可以採用任意類型的任意值(即,您可以編寫$ar[1] = 's';),因此必須存儲類型和附加元信息。

用以下測試腳本:

<?php 
$n = 20000000; 

$ar = array(); 
$i = 0; 
$before = memory_get_usage(); 
for ($i = 0;$i < $n;$i++) { 
    $ar[] = ($i % 2 == 0); 
} 
$after = memory_get_usage(); 

echo 'Using ' . ($after - $before) . ' Bytes for ' . $n . ' values'; 
echo ', per value: ' . (($after - $before)/$n) . "\n"; 

我得到每個陣列條目(64,PHP 5.4.0-2)約字節。這似乎是實現的較高端; ideone報告73字節/條目(php 5.2.11),codepad也是如此。