我应该预先分配一个数组还是随着我的增长而增长
Should I pre-allocate an array or grow as I go
在过去的几个月里,我一直在努力更好地理解 javascript。这无疑让我想要获得计算机科学学位。无论如何,关于 JavaScript.
的两个相关但相互矛盾的观点令人遗憾地 运行
根据this article,不应该预填充数组,而是在需要时增加它。
这听起来很棒,直到我 运行 进入另一个 article on wikipedia,它表示执行上述操作会很慢。
我正在考虑从头开始组装一些游戏,并且作为我的代码素食主义者,计划将性能放在首位。 那么拥有一个增长的数组还是一个预分配的数组更好? 在 HTML5 游戏开发中,建议使用诸如对象池之类的东西,我倾向于使用数组创建。
粗略指南:
预先分配的更好。如果你用 push
或 pop
开发一个,JS 引擎需要做很多额外的步骤。
即使使用超大数组也比经常更改大小要好得多。并且您应该尽可能对固定大小的数组进行操作。
Here 您可以找到更多相关信息。
数组性能高度基于JS引擎实现:
因为 javascript 是一个规范而不是一个实现,不同的浏览器有不同版本的 Javascript 引擎。这些版本会定期更新以提高速度并采取不同的方法来优化它。
在优化时,通常会在某些功能的速度之间进行权衡,包括数组 manipulated/created。这意味着我上面提供的指南可能不是 100% 准确,因为一个 JS 引擎可能具有另一个 JS 引擎所缺乏的某些行为。这可能会导致 manipulation/creation 技术在数组上的速度差异。
在过去的几个月里,我一直在努力更好地理解 javascript。这无疑让我想要获得计算机科学学位。无论如何,关于 JavaScript.
的两个相关但相互矛盾的观点令人遗憾地 运行根据this article,不应该预填充数组,而是在需要时增加它。
这听起来很棒,直到我 运行 进入另一个 article on wikipedia,它表示执行上述操作会很慢。
我正在考虑从头开始组装一些游戏,并且作为我的代码素食主义者,计划将性能放在首位。 那么拥有一个增长的数组还是一个预分配的数组更好? 在 HTML5 游戏开发中,建议使用诸如对象池之类的东西,我倾向于使用数组创建。
粗略指南:
预先分配的更好。如果你用 push
或 pop
开发一个,JS 引擎需要做很多额外的步骤。
即使使用超大数组也比经常更改大小要好得多。并且您应该尽可能对固定大小的数组进行操作。
Here 您可以找到更多相关信息。
数组性能高度基于JS引擎实现:
因为 javascript 是一个规范而不是一个实现,不同的浏览器有不同版本的 Javascript 引擎。这些版本会定期更新以提高速度并采取不同的方法来优化它。
在优化时,通常会在某些功能的速度之间进行权衡,包括数组 manipulated/created。这意味着我上面提供的指南可能不是 100% 准确,因为一个 JS 引擎可能具有另一个 JS 引擎所缺乏的某些行为。这可能会导致 manipulation/creation 技术在数组上的速度差异。