From 347f3d4f036519764d882a53adcfa08f66bd27ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jimmy=20W=C3=A4rting?= Date: Thu, 18 Apr 2019 02:10:09 +0200 Subject: [PATCH] concat to typed array when possible --- Blob.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/Blob.js b/Blob.js index fabd941..df7dd43 100644 --- a/Blob.js +++ b/Blob.js @@ -319,6 +319,21 @@ } } + function concatTypedarrays (chunks) { + var size = 0 + var i = chunks.length + while (i--) { size += chunks[i].length } + var b = new Uint8Array(size) + var offset = 0 + for (i = 0, l = chunks.length; i < l; i++) { + var chunk = chunks[i] + b.set(chunk, offset) + offset += chunk.byteLength || chunk.length + } + + return b + } + /********************************************************/ /* Blob constructor */ /********************************************************/ @@ -339,7 +354,9 @@ } } - this._buffer = [].concat.apply([], chunks) + this._buffer = global.Uint8Array + ? concatTypedarrays(chunks) + : [].concat.apply([], chunks) this.size = this._buffer.length this.type = opts ? opts.type || '' : '' }