如何有效地从 JS ArrayBuffer 中读取结构(浏览器)?

How to read a struct from a JS ArrayBuffer efficiently (browser)?

假设我有一个结构

typedef struct {
  uint32_t intensity;
  uint16_t ring;
  float32_t x;
  float32_t y;
  float32_t z;
} Point;

(总共 18 个字节)我在一个 ArrayBuffer 中有一个由数万个 18 字节结构组成的巨大数组。

如何有效地遍历它们而不在循环中刺激性地调用“new DataView()”构造函数?

这是在浏览器中,而不是 NodeJS。

无需在每次读取值时都创建一个新的 DataView。只创建一次并使用offset读取特定位置的数据:

let dv = new DataView(buffer);
let offset = 0;

while (offset < buffer.byteLength) {
    intensity = dv.getUint32(offset);  offset += 32;
    ring = dv.getUint16(offset);       offset += 16;
    // etc
}

}