我正在做一些需要在内存使用方面非常高效的事情,我希望这里的人知道。。。将数据存储在一个整数引用另一个字符串数组的数组中更有效,还是相反?每个引用整数的字符串。
一个例子是存储足球队的球衣号码。。。假设有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在写入时使用基于引用的副本。这类帖子开始让你对引擎盖下发生的事情有所了解。:-)