大多数内存有效的创建数组的方式? Int =>数组字符串或字符串=>数组整数?

时间:2012-02-09 11:21:28

标签: php arrays

我正在开发一些在内存使用方面需要非常高效的东西,我希望有人在这里知道......将数据存储在数组中是否更有效,其中一个整数引用另一个字符串数组,或者另一种方式?每个字符串引用整数。

一个例子是存储足球队的球衣号码......假设球衣号码为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;
}

1 个答案:

答案 0 :(得分:1)

  

它有所作为吗?无论哪种方式,数据都将存储在缓存中,因此它不像是CPU的使用问题 - 只是内存使用问题。

物质上,不。您将无法轻松检查此内部,因为PHP存储引擎非常复杂,而且此级别存在噪声。即使对于大型复杂结构,由于PHP使用基于引用的写入时复制,因此很难跟踪存储使用情况。 This一些帖子开始让你了解引擎盖下的内容。 : - )