如何有效地从 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
}
}
假设我有一个结构
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
}
}