1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-22 15:06:54 -05:00

perf: improve Buffer.from(buf) by 29x (#24341)

This commit is contained in:
Divy Srivastava 2024-06-26 06:24:48 -07:00 committed by GitHub
parent eb283c43f5
commit 6da87450ed
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -229,11 +229,22 @@ function fromArrayLike(array) {
return buf; return buf;
} }
function fromUint8Array(u8) {
const buf = new Uint8Array(u8.buffer, u8.byteOffset, u8.byteLength);
Object.setPrototypeOf(buf, Buffer.prototype);
return buf.slice();
}
function fromObject(obj) { function fromObject(obj) {
if (obj.length !== undefined || isAnyArrayBuffer(obj.buffer)) { if (obj.length !== undefined || isAnyArrayBuffer(obj.buffer)) {
if (typeof obj.length !== "number") { if (typeof obj.length !== "number") {
return createBuffer(0); return createBuffer(0);
} }
if (obj instanceof Uint8Array) {
return fromUint8Array(obj);
}
return fromArrayLike(obj); return fromArrayLike(obj);
} }