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;
}
function fromUint8Array(u8) {
const buf = new Uint8Array(u8.buffer, u8.byteOffset, u8.byteLength);
Object.setPrototypeOf(buf, Buffer.prototype);
return buf.slice();
}
function fromObject(obj) {
if (obj.length !== undefined || isAnyArrayBuffer(obj.buffer)) {
if (typeof obj.length !== "number") {
return createBuffer(0);
}
if (obj instanceof Uint8Array) {
return fromUint8Array(obj);
}
return fromArrayLike(obj);
}