簡體   English   中英

創建數組的內存效率最高的方法? 整數=>數組字符串或字符串=>數組整數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM