Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Pack array of bitmasks (numbers) to base64
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36
Browser:
Chrome 134
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
Pack
1121335.1 Ops/sec
UnPack
2502285.0 Ops/sec
HTML Preparation code:
<!--your preparation HTML code goes here-->
Script Preparation code:
function generateBitmasks() { const bitmasks = new Set(); bitmasks.add(0); bitmasks.add(1); bitmasks.add(0xFF); // 8 bits bitmasks.add(0xFFFF); // 16 bits bitmasks.add(0xFFFFFF); // 24 bits bitmasks.add(0xFFFFFFFF); // 32 bits for (let i = 0; i < 31; i++) { bitmasks.add(1 << i); } bitmasks.add(0x12345678); bitmasks.add(0x55555555); bitmasks.add(0xAAAAAAAA); bitmasks.add(0x33333333); bitmasks.add(0xCCCCCCCC); return Array.from(bitmasks) } var bitmasks = generateBitmasks(); var packed = packBitmasks(bitmasks); function packBitmasks(bitmasks) { const buffer = new ArrayBuffer(bitmasks.length * 4); const uint32View = new Uint32Array(buffer); for (let i = 0; i < bitmasks.length; i++) { uint32View[i] = bitmasks[i]; } const uint8View = new Uint8Array(buffer); const binary = String.fromCharCode.apply(null, uint8View); return btoa(binary); } function unpackBitmasks(packed) { const binary = atob(packed); const count = binary.length >>> 2; const result = new Array(count); for (let i = 0, offset = 0; i < count; i++, offset += 4) { result[i] = ( binary.charCodeAt(offset) | (binary.charCodeAt(offset + 1) << 8) | (binary.charCodeAt(offset + 2) << 16) | (binary.charCodeAt(offset + 3) << 24) ) >>> 0; } return result; }
Tests:
Pack
packBitmasks(bitmasks)
UnPack
unpackBitmasks(packed)