我正在开发一些在内存使用方面需要非常高效的东西,我希望有人在这里知道......将数据存储在数组中是否更有效,其中一个整数引用另一个字符串数组,或者另一种方式?每个字符串引用整数。
一个例子是存储足球队的球衣号码......假设球衣号码为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;
}
答案 0 :(得分:1)
它有所作为吗?无论哪种方式,数据都将存储在缓存中,因此它不像是CPU的使用问题 - 只是内存使用问题。
物质上,不。您将无法轻松检查此内部,因为PHP存储引擎非常复杂,而且此级别存在噪声。即使对于大型复杂结构,由于PHP使用基于引用的写入时复制,因此很难跟踪存储使用情况。 This一些帖子开始让你了解引擎盖下的内容。 : - )