Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
ArrayBuffer to base64 String vs. superhuman
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:133.0) Gecko/20100101 Firefox/133.0
Browser:
Firefox 133
Operating system:
Mac OS X 10.15
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
String.fromCharCode.apply
7501.0 Ops/sec
byteArrayToString
8805.7 Ops/sec
superhuman
1989.9 Ops/sec
HTML Preparation code:
<script src='https://cdn.jsdelivr.net/gh/superhuman/fast64@master/index.js'></script>
Script Preparation code:
var ab = new ArrayBuffer(70*1024); var uint8 = new Uint8Array(ab); for (var i = 0; i < ab.byteLength; i++) { uint8[i] = i % 256; } var expected = window.btoa(String.fromCharCode.apply(null, uint8)); function byteArrayToString(bytes) { var CHUNK_SIZE = 8*1024; if (bytes.length <= CHUNK_SIZE) return String.fromCharCode.apply(null, bytes); var str = ''; for (var i = 0; i < bytes.length; i += CHUNK_SIZE) str += String.fromCharCode.apply(null, bytes.slice(i, i+CHUNK_SIZE)); return str; } function validate(res){ if (res !== expected) throw "expected=" + expected + " but got " + res; } function uint6ToB64(nUint6) { return nUint6 < 26 ? nUint6 + 65 : nUint6 < 52 ? nUint6 + 71 : nUint6 < 62 ? nUint6 - 4 : nUint6 === 62 ? 43 : nUint6 === 63 ? 47 : 65; }; function bytesToBase64(aBytes) { var eqLen = (3 - (aBytes.length % 3)) % 3, sB64Enc = ""; for (var nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) { nMod3 = nIdx % 3; nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24); if (nMod3 === 2 || aBytes.length - nIdx === 1) { sB64Enc += String.fromCharCode(uint6ToB64(nUint24 >>> 18 & 63), uint6ToB64(nUint24 >>> 12 & 63), uint6ToB64(nUint24 >>> 6 & 63), uint6ToB64(nUint24 & 63)); nUint24 = 0; } } return eqLen === 0 ? sB64Enc : sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? "=" : "=="); };
Tests:
String.fromCharCode.apply
var bin = String.fromCharCode.apply(null, uint8); var res = window.btoa(bin) validate(res)
byteArrayToString
var bin = byteArrayToString(uint8); var res = window.btoa(bin) validate(res)
superhuman
var res = B64.encode(uint8); validate(res)