在JS中,什么是快速存储XY坐标整数的最高效方法

时间:2015-06-20 21:10:39

标签: javascript

我最近在阅读了JS here之后了解到JS中的数组实际上是"稀疏数组"并且本质上是一个指针数组,并且在需要之前不会分配空间。我知道在C中你可以指定一个数组的类型并分配所需的空间,例如int C [20] ;.

现在我有一个画布颜料应用程序,当事件发生时记录offsetX,offsetY和其他数据,以及事件发生时已经过了多少MS。在如何通过创建对象的链接列表,对象数组,甚至多个数组来存储此信息的众多选项中,记录每个事件的整数值。

经过一些研究后我发现有3种初始化和创建数组的方法:

var arrayT = new Array(24);
var arrayW = [];
arrayW.length = 24;
var buffer = new ArrayBuffer(24);

虽然我已经对它们中的每一个进行了一些研究,但我并不确定哪种方法对于有效分配整数是最佳的,因为空间已经预先分配,这样JS引擎就不需要经常检查输入数据类型和创建所需的空间。如果您认为Arrays不是最佳解决方案,我可以做些什么来利用JS的优势?

2 个答案:

答案 0 :(得分:1)

是的,标准JavaScript“数组”aren't really arrays at all

除了罕见的极其性能敏感的情况之外,它实际上不太重要,但是如果你想要一个真正预先分配的整数数组,那么在任何模糊的现代浏览器上你都可以使用Int32ArrayMDNspec):

var a = new Int32Array(24);

(或Int8ArrayInt16Array。)

答案 1 :(得分:0)

如果是来自阵列原型,它们都是一样的。 例如,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array