1

我看到了这篇文章,但不太明白,也没有完全回答我的问题。另外 - 似乎表明数组速度较慢。我想:这不可能

当所有其他条件都相同时,并且以速度为目标时,在数组中分配变量的最佳方法是什么?

这是否更好:

$part1 = "a";
$part2 = "b";
$part3 = "c";
$part4 = "d";

(当然,我知道这不允许您像使用数组那样与数据进行交互,但假设您不需要这样做。)

这是否更好:

$part[1] = "a";
$part[2] = "b";
$part[3] = "c";
$part[4] = "d";

这是否更好:

$part = array("a","b","c","d");

或者是其他东西?为什么一个人比其他人更好,背后的机制是什么?

另外 - 它是否取决于分配的元素数量?当谈到多维数组、不同的数据类型或不同的语言时,答案会如何变化?另外,如果我初始化数组然后向它添加元素,它会改变吗?

4

1 回答 1

0

数组就是数组,无论您如何指定或分配变量给它。一旦你创建了一个数组,它就会被放入内存中(除非你正在使用SplFixedArray)并且内存中的数组增长得非常快。

考虑这篇文章,它更深入地研究了资源密集型数组的方式:http: //nikic.github.io/2011/12/12/How-big-are-PHP-arrays-really-Hint-BIG.html

来自文章:

在这篇文章中,我想使用以下脚本作为示例来研究 PHP 数组(以及一般值)的内存使用情况,该脚本创建 100000 个唯一整数数组元素并测量生成的内存使用情况:

<?php
$startMemory = memory_get_usage();
$array = range(1, 100000);
echo memory_get_usage() - $startMemory, ' bytes';

你希望它是多少?很简单,一个整数是 8 个字节(在 64 位 unix 机器上,使用 long 类型),你有 100000 个整数,所以你显然需要 800000 个字节。这大约是 0.76 MB。

现在尝试运行上面的代码。如果你愿意,你可以在网上做。这给了我 14649024 字节。是的,你没听错,这是 13.97 MB - 是我们估计的 18 倍。

于 2013-08-25T21:29:43.263 回答