正如問題所述,下列數組是否需要5位內存?PHP中的布爾值是否只佔用1位內存?
$flags = array(true, false, true, false, false);
[編輯]:道歉只是發現this duplicate。
正如問題所述,下列數組是否需要5位內存?PHP中的布爾值是否只佔用1位內存?
$flags = array(true, false, true, false, false);
[編輯]:道歉只是發現this duplicate。
存儲在獨立的存儲器單元陣列中的每個元素,你也需要存儲的哈希表爲陣,與鑰匙一起,所以NOOOO,這將是一個很多更多。
編號PHP的內部元數據附加到每個定義的變量/數組元素。 PHP不直接支持位字段,所以最小的ACTUAL分配是一個字節,加上元數據開銷。
我懷疑是否有一個應用程序使用少於系統arcitecture的數據word
作爲最小的數據存儲單元。
但我相信它不應該是你的關注。
這取決於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也是如此。
簡答題:不會。[Google「PHP zval」](http://www.google.com/search?q=php+zval)找出原因... – DaveRandom 2012-03-20 15:42:22