buffer: improve equals() performance
PR-URL: https://github.com/nodejs/node/pull/29199 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
This commit is contained in:
parent
d937b029a9
commit
f0c8898fb5
22
benchmark/buffers/buffer-equals.js
Normal file
22
benchmark/buffers/buffer-equals.js
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
'use strict';
|
||||||
|
const common = require('../common.js');
|
||||||
|
|
||||||
|
const bench = common.createBenchmark(main, {
|
||||||
|
size: [0, 512, 16386],
|
||||||
|
difflen: ['true', 'false'],
|
||||||
|
n: [1e6]
|
||||||
|
});
|
||||||
|
|
||||||
|
function main({ n, size, difflen }) {
|
||||||
|
const b0 = Buffer.alloc(size, 'a');
|
||||||
|
const b1 = Buffer.alloc(size + (difflen === 'true' ? 1 : 0), 'a');
|
||||||
|
|
||||||
|
if (b1.length > 0)
|
||||||
|
b1[b1.length - 1] = 'b'.charCodeAt(0);
|
||||||
|
|
||||||
|
bench.start();
|
||||||
|
for (let i = 0; i < n; i++) {
|
||||||
|
b0.equals(b1);
|
||||||
|
}
|
||||||
|
bench.end(n);
|
||||||
|
}
|
@ -716,10 +716,14 @@ Buffer.prototype.equals = function equals(otherBuffer) {
|
|||||||
throw new ERR_INVALID_ARG_TYPE(
|
throw new ERR_INVALID_ARG_TYPE(
|
||||||
'otherBuffer', ['Buffer', 'Uint8Array'], otherBuffer);
|
'otherBuffer', ['Buffer', 'Uint8Array'], otherBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this === otherBuffer)
|
if (this === otherBuffer)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return _compare(this, otherBuffer) === 0;
|
if (this.byteLength !== otherBuffer.byteLength)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return this.byteLength === 0 || _compare(this, otherBuffer) === 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
let INSPECT_MAX_BYTES = 50;
|
let INSPECT_MAX_BYTES = 50;
|
||||||
|
@ -12,6 +12,7 @@ runBenchmark('buffers',
|
|||||||
'bytes=0',
|
'bytes=0',
|
||||||
'byteLength=1',
|
'byteLength=1',
|
||||||
'charsPerLine=6',
|
'charsPerLine=6',
|
||||||
|
'difflen=false',
|
||||||
'encoding=utf8',
|
'encoding=utf8',
|
||||||
'endian=BE',
|
'endian=BE',
|
||||||
'len=256',
|
'len=256',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user