[英]Most memory efficient way of creating an array? Int => array strings or string => array ints?
我正在做一些需要在內存使用方面非常有效的事情,我希望這里的人知道...將數據存儲在具有整數的數組中是否更有效,該整數引用另一個字符串數組,或者以其他方式周圍? 每個字符串都引用整數。
例如,存儲橄欖球隊的球衣號碼...假設有1到20個球衣號碼,大約有200個不同的橄欖球隊-每個橄欖球隊的球衣號碼為1到20,每個球衣號碼都在每個橄欖球隊中。 最好像這樣存儲這些數據:
JerseyNumber(Int)=>array(team, team, team, etc.)
要么
TeamName(String)=>array(1,2,3,4,etc.)
這有什么不同嗎? 無論哪種方式,數據都將存儲在緩存中,因此這與CPU使用率無關-只是內存使用率無關。
我已經包含了用於生成測試數據的代碼...我曾嘗試使用memory_get_usage()(前后有所不同),但我不確定如何准確地獲取實際的內存使用量這樣的數組。
$ids = array();
for ($i = 0; $i < 500; $i++) {
$ids[] = $i;
}
$tmpArray = array();
$values = array();
for ($i = 0; $i < 60; $i++) {
$randString = randString(rand(60,100));
$values[] = $randString;
}
foreach ($values as $feValues) {
$tmpArray[$feValues] = $ids;
}
$tmpArrayTwo = array();
foreach ($ids as $feIds) {
$tmpArrayTwo[$feIds] = $values;
}
這有什么不同嗎? 無論哪種方式,數據都將存儲在緩存中,因此這與CPU使用率無關-只是內存使用率無關。
實質上,不。 您將無法輕松地檢查其內部情況,因為PHP存儲引擎非常復雜,而且此級別處於混亂之中。 即使對於大型的復雜結構,也很難跟蹤存儲使用情況,因為PHP使用基於引用的寫時復制。 這類文章開始讓您了解幕后的情況。 :-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.