2012-03-20 63 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也是如此。