gpt4 book ai didi

php - 对于 PHP,如果创建新数组或向现有数组添加相同索引,内存使用情况是否存在显着差异?

转载 作者:行者123 更新时间:2023-12-04 22:29:01 25 4
gpt4 key购买 nike

如果我要创建一个包含数百个索引的数组,与向现有数组添加第二个维度相比,额外数组需要多少开销?

即$pages['page']['url'] 和 $titles['page']['title'] 对比 $pages['page']['url']['title'] 对比 $pages['page' ]['title'],最后一个示例假设 $pages 的每个索引都包含一个关联数组。

目标是能够查找每个“页面”的两个属性。每个“页面”都有一个“url”和一个“标题”,这对于数组上的内存使用效率会更高吗?哪个用于访问/存储数据?

两个关联数组:

// Store the information in arrays
$titles['page1'] = 'Page 1 Title';
$titles['page2'] = 'Page 2 Title';

$urls['page1'] = 'http://www.page1.com';
$urls['page2'] = 'http://www.page2.com';

// Display an example
echo $titles['page1'] . ' is at ' . $urls['page1'];

或一组数组:

$pages['page1'] = array( 'title' => 'Page 1 Title', 'url' => 'http://www.page1.com' );
$pages['page2'] = array( 'title' => 'Page 2 Title', 'url' => 'http://www.page2.com' );

// Display an example
echo $pages['page1']['title'] . ' is at ' . $pages['page1']['url'];

最佳答案

二维数组的内存使用量稍大,但这可能是代码错误(?)导致的。

<!--
http://php.net/manual/en/function.memory-get-usage.php

array1: 116408 (1D 1001 keys) (1x 100.000 keys: 11.724.512)
array2: 116552 (2D, 1002 keys) (2x 50.000 keys: 11.724.768)

total: +144 +256
-->

<?php

function genRandomString() {
$length = 10;
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$string = '';

for ($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(0, strlen($characters))];
}

return $string;
}

$i = 0;

// ----- Larger 1D array -----
$mem_start = memory_get_usage();
echo "initial1: " . $mem_start . "<br />";
$arr = array();

for ($i = 1; $i <= 1000; $i++) {
$arr[ genRandomString() ] = "Hello world!";
}

echo "array1: " . (memory_get_usage() - $mem_start) . "<br />";
unset($arr);

// ----- 2D array -----
$mem_start = memory_get_usage();
$arr2 = array();

echo "initial2: " . $mem_start . "<br />";


for ($i = 1; $i <= 500; $i++) {
$arr2["key______1"][ genRandomString() ] = "Hello world!";
$arr2["key______2"][ genRandomString() ] = "Hello world!";
}

echo "array2: " . (memory_get_usage() - $mem_start) . "<br />";

unset($arr2);

unset($i);
unset($mem_start)
echo "final: " . memory_get_usage() . "<br />";

?>

关于php - 对于 PHP,如果创建新数组或向现有数组添加相同索引,内存使用情况是否存在显着差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7908502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com