创建数组的内存效率最高的方法?Int=>;数组字符串或字符串=>;数组int


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在写入时使用基于引用的副本。这类帖子开始让你对引擎盖下发生的事情有所了解。:-)