From ca2f6d03b6675257ee2c6a9f5cdb0d307def2532 Mon Sep 17 00:00:00 2001 From: Daniel Huigens Date: Sun, 2 Sep 2018 17:09:38 +0200 Subject: [PATCH] Slightly optimize base64 decoding --- src/encoding/base64.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/encoding/base64.js b/src/encoding/base64.js index 3c5d4f1a..62cd9b17 100644 --- a/src/encoding/base64.js +++ b/src/encoding/base64.js @@ -106,19 +106,20 @@ function r2s(t, u) { let a = 0; return stream.transform(t, value => { - const r = []; const tl = value.length; + const r = new Uint8Array(Math.ceil(0.75 * tl)); + let index = 0; for (let n = 0; n < tl; n++) { c = b64.indexOf(value.charAt(n)); if (c >= 0) { if (s) { - r.push(a | ((c >> (6 - s)) & 255)); + r[index++] = a | ((c >> (6 - s)) & 255); } s = (s + 2) & 7; a = (c << s) & 255; } } - return new Uint8Array(r); + return r.subarray(0, index); }); }