Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
typedarray vs dataview
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36
Browser:
Chrome 134
Operating system:
Linux
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
blaaaa
25988.3 Ops/sec
dataview
26184.7 Ops/sec
Script Preparation code:
function readAs(buf, Type, offset, count) { count = count === undefined || count === 0 ? 1 : count; const sub = buf.slice(offset, offset + Type.BYTES_PER_ELEMENT * count); const r = new Type(sub); if (count === undefined || count === 1) return r[0]; const ret = []; for (let i = 0; i < count; i++) { ret.push(r[i]); } return ret; }
Tests:
blaaaa
(() => { const arraybuffer = new ArrayBuffer(1000000); const o = {}; o.pointsOffset = readAs(arraybuffer, Uint32Array, 96); // offset to point data o.pointsFormatId = readAs(arraybuffer, Uint8Array, 104) & 0b111111; o.pointsStructSize = readAs(arraybuffer, Uint16Array, 105); // point data record length o.pointsCount = readAs(arraybuffer, Uint32Array, 107); // number of point records let start = 32 * 3 + 35; o.scale = readAs(arraybuffer, Float64Array, start, 3); // [scale X, scale Y, scale Z] start += 24; o.offset = readAs(arraybuffer, Float64Array, start, 3); // [offset X, offset Y, offset Z] start += 24; const bounds = readAs(arraybuffer, Float64Array, start, 6); o.maxs = [bounds[0], bounds[2], bounds[4]]; // max X, max Y, max Z o.mins = [bounds[1], bounds[3], bounds[5]]; // min X, min Y, min Z })()
dataview
(() => { const arraybuffer = new ArrayBuffer(1000000); const o = {}; const dv = new DataView(arraybuffer); o.pointsOffset = dv.getUint32(96, true); // offset to point data o.pointsFormatId = dv.getUint8(104, true) & 0b111111; o.pointsStructSize = dv.getUint16(105, true); // point data record length o.extraBytes = 0; o.pointsCount = dv.getUint32(107, true); let start = 32 * 3 + 35; o.scale = [dv.getFloat64(start, true), dv.getFloat64(start + 8, true), dv.getFloat64(start + 16, true)]; // [scale X, scale Y, scale Z] start += 24; o.offset = [dv.getFloat64(start, true), dv.getFloat64(start + 8, true), dv.getFloat64(start + 16, true)]; // [scale X, scale Y, scale Z] start += 24; const bounds = [ dv.getFloat64(start, true), dv.getFloat64(start + 8, true), dv.getFloat64(start + 16, true), dv.getFloat64(start + 24, true), dv.getFloat64(start + 32, true), dv.getFloat64(start + 40, true), ]; // [scale X, scale Y, scale Z]; o.maxs = [bounds[0], bounds[2], bounds[4]]; // max X, max Y, max Z o.mins = [bounds[1], bounds[3], bounds[5]]; // min X, min Y, min Z })()