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 (iPhone; CPU iPhone OS 17_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 YaBrowser/24.7.6.604.10 YaApp_iOS/2407.6 YaApp_iOS_Browser/2407.6 Safari/604.1 SA/3
Browser:
Yandex Browser 24
Operating system:
iOS 17.6.1
Device Platform:
Mobile
Date tested:
one year ago
Test name
Executions per second
blaaaa
11588.6 Ops/sec
dataview
10759.3 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 })()