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



我最近在阅读JS后了解到,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 引擎就不需要不断检查输入数据类型并创建所需的空间。另外,如果您认为数组不是最佳解决方案,我该怎么做才能利用 JS 的优势?

是的,标准的JavaScript"数组"根本不是真正的数组。

除非在极少数极端性能敏感的情况下,否则这实际上不太可能重要,但是如果你想要一个真正的预分配整数数组,在任何模糊的现代浏览器上,你可以使用Int32Array(MDN,规范):

var a = new Int32Array(24);

(或Int8ArrayInt16Array

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

最新更新