我应该预分配一个数组还是随其增长

时间:2018-08-07 18:54:55

标签: javascript arrays performance v8

在过去的几个月中,我一直在尝试更好地理解javascript。这肯定使我想获得计算机科学学位。无论如何,可悲的是,我遇到了两个与JavaScript相关但相互冲突的观点。

根据this article,不应预填充数组,而应在需要时对其进行填充。

这听起来很棒,直到我遇到另一个article on wikipedia为止,他说做上述事情会很慢。

我正在考虑从头开始整理一些游戏,并成为我的纯素食主义者,计划将性能放在我的工作之首。 所以最好增加一个数组,或者预先分配一个数组?在HTML5游戏开发中,建议使用对象池之类的东西,我倾向于使用数组来创建。 / p>

1 个答案:

答案 0 :(得分:3)

粗略准则:

预先分配的更好。例如,如果您使用pushpop来成长,则JS引擎需要执行许多附加步骤。

即使使用超大数组也比经常更改大小更好。而且,您应该尽可能对固定大小的数组进行操作。

Here,您可以找到有关此的更多信息。

Aray的性能高度依赖于JS引擎的实现:

因为javascript是一种规范而非实现,所以不同的浏览器具有不同版本的Javascript引擎。这些版本会定期更新以提高速度,并采用不同的方法来对此进行优化。

优化时,通常在某些功能的速度(包括如何操纵/创建数组)之间进行权衡。这意味着我上面提供的准则可能不是100%准确的,因为一个JS引擎可能具有其他JS引擎所缺乏的某些行为。这可能会导致阵列上的操作/创建技术的速度不同。