mirror of
https://github.com/nodejs/node.git
synced 2025-05-15 17:51:35 +00:00
benchmark: refactor buffer benchmarks
Currently the buffer benchmarks take significantly too long to complete. This drastically reduces the overall runtime by removing obsolete checked variations and reducing the iteration count. It also improves the benchmarks by removing the deprecated `new Buffer(size)` usage and some other small improvements. PR-URL: https://github.com/nodejs/node/pull/26418 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com> Reviewed-By: Peter Marshall <petermarshall@chromium.org> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
This commit is contained in:
parent
5ccce52113
commit
7b802685c4
@ -3,8 +3,8 @@ const common = require('../common');
|
|||||||
|
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
encoding: ['utf8', 'base64', 'buffer'],
|
encoding: ['utf8', 'base64', 'buffer'],
|
||||||
len: [1, 2, 4, 16, 64, 256], // x16
|
len: [2, 16, 256], // x16
|
||||||
n: [5e6]
|
n: [4e6]
|
||||||
});
|
});
|
||||||
|
|
||||||
// 16 chars each
|
// 16 chars each
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
const common = require('../common.js');
|
const common = require('../common.js');
|
||||||
|
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
size: [16, 512, 1024, 4096, 16386],
|
size: [16, 512, 4096, 16386],
|
||||||
args: [1, 2, 3, 4, 5],
|
args: [1, 2, 5],
|
||||||
n: [1e6]
|
n: [1e6]
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -16,22 +16,6 @@ function main({ n, size, args }) {
|
|||||||
|
|
||||||
b1[size - 1] = 'b'.charCodeAt(0);
|
b1[size - 1] = 'b'.charCodeAt(0);
|
||||||
|
|
||||||
switch (args) {
|
|
||||||
case 2:
|
|
||||||
b0.compare(b1, 0);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
b0.compare(b1, 0, b1Len);
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
b0.compare(b1, 0, b1Len, 0);
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
b0.compare(b1, 0, b1Len, 0, b0Len);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
b0.compare(b1);
|
|
||||||
}
|
|
||||||
switch (args) {
|
switch (args) {
|
||||||
case 2:
|
case 2:
|
||||||
b0.compare(b1, 0);
|
b0.compare(b1, 0);
|
||||||
|
@ -3,7 +3,7 @@ const common = require('../common.js');
|
|||||||
|
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
method: ['offset', 'slice'],
|
method: ['offset', 'slice'],
|
||||||
size: [16, 512, 1024, 4096, 16386],
|
size: [16, 512, 4096, 16386],
|
||||||
n: [1e6]
|
n: [1e6]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
const common = require('../common.js');
|
const common = require('../common.js');
|
||||||
|
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
size: [16, 512, 1024, 4096, 16386],
|
size: [16, 512, 4096, 16386],
|
||||||
n: [1e6]
|
n: [1e6]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -2,20 +2,20 @@
|
|||||||
const common = require('../common.js');
|
const common = require('../common.js');
|
||||||
|
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
pieces: [1, 4, 16],
|
pieces: [4, 16],
|
||||||
pieceSize: [1, 16, 256],
|
pieceSize: [1, 16, 256],
|
||||||
withTotalLength: [0, 1],
|
withTotalLength: [0, 1],
|
||||||
n: [1024]
|
n: [8e5]
|
||||||
});
|
});
|
||||||
|
|
||||||
function main({ n, pieces, pieceSize, withTotalLength }) {
|
function main({ n, pieces, pieceSize, withTotalLength }) {
|
||||||
const list = new Array(pieces);
|
const list = Array.from({ length: pieces })
|
||||||
list.fill(Buffer.allocUnsafe(pieceSize));
|
.fill(Buffer.allocUnsafe(pieceSize));
|
||||||
|
|
||||||
const totalLength = withTotalLength ? pieces * pieceSize : undefined;
|
const totalLength = withTotalLength ? pieces * pieceSize : undefined;
|
||||||
|
|
||||||
bench.start();
|
bench.start();
|
||||||
for (var i = 0; i < n * 1024; i++) {
|
for (var i = 0; i < n; i++) {
|
||||||
Buffer.concat(list, totalLength);
|
Buffer.concat(list, totalLength);
|
||||||
}
|
}
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
const SlowBuffer = require('buffer').SlowBuffer;
|
|
||||||
|
|
||||||
const common = require('../common.js');
|
const common = require('../common.js');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
@ -9,10 +8,9 @@ const bench = common.createBenchmark(main, {
|
|||||||
'fast-alloc-fill',
|
'fast-alloc-fill',
|
||||||
'fast-allocUnsafe',
|
'fast-allocUnsafe',
|
||||||
'slow-allocUnsafe',
|
'slow-allocUnsafe',
|
||||||
'slow',
|
],
|
||||||
'buffer()'],
|
len: [10, 1024, 4096, 8192],
|
||||||
len: [10, 1024, 2048, 4096, 8192],
|
n: [6e5]
|
||||||
n: [1024]
|
|
||||||
});
|
});
|
||||||
|
|
||||||
function main({ len, n, type }) {
|
function main({ len, n, type }) {
|
||||||
@ -24,7 +22,7 @@ function main({ len, n, type }) {
|
|||||||
break;
|
break;
|
||||||
case 'fast-alloc-fill':
|
case 'fast-alloc-fill':
|
||||||
bench.start();
|
bench.start();
|
||||||
for (i = 0; i < n * 1024; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
Buffer.alloc(len, 0);
|
Buffer.alloc(len, 0);
|
||||||
}
|
}
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
@ -35,18 +33,12 @@ function main({ len, n, type }) {
|
|||||||
case 'slow-allocUnsafe':
|
case 'slow-allocUnsafe':
|
||||||
fn = Buffer.allocUnsafeSlow;
|
fn = Buffer.allocUnsafeSlow;
|
||||||
break;
|
break;
|
||||||
case 'slow':
|
|
||||||
fn = SlowBuffer;
|
|
||||||
break;
|
|
||||||
case 'buffer()':
|
|
||||||
fn = Buffer;
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
assert.fail('Should not get here');
|
assert.fail('Should not get here');
|
||||||
}
|
}
|
||||||
|
|
||||||
bench.start();
|
bench.start();
|
||||||
for (i = 0; i < n * 1024; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
fn(len);
|
fn(len);
|
||||||
}
|
}
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
|
@ -14,7 +14,7 @@ const bench = common.createBenchmark(main, {
|
|||||||
'fill("t", 0)',
|
'fill("t", 0)',
|
||||||
'fill(Buffer.alloc(1), 0)',
|
'fill(Buffer.alloc(1), 0)',
|
||||||
],
|
],
|
||||||
size: [2 ** 8, 2 ** 13, 2 ** 16],
|
size: [2 ** 13, 2 ** 16],
|
||||||
n: [2e4]
|
n: [2e4]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -8,14 +8,13 @@ const bench = common.createBenchmark(main, {
|
|||||||
'arraybuffer',
|
'arraybuffer',
|
||||||
'arraybuffer-middle',
|
'arraybuffer-middle',
|
||||||
'buffer',
|
'buffer',
|
||||||
'uint8array',
|
|
||||||
'string',
|
'string',
|
||||||
'string-utf8',
|
'string-utf8',
|
||||||
'string-base64',
|
'string-base64',
|
||||||
'object',
|
'object',
|
||||||
],
|
],
|
||||||
len: [10, 2048],
|
len: [100, 2048],
|
||||||
n: [2048]
|
n: [8e5]
|
||||||
});
|
});
|
||||||
|
|
||||||
function main({ len, n, source }) {
|
function main({ len, n, source }) {
|
||||||
@ -26,17 +25,19 @@ function main({ len, n, source }) {
|
|||||||
const uint8array = new Uint8Array(len);
|
const uint8array = new Uint8Array(len);
|
||||||
const obj = { length: null }; // Results in a new, empty Buffer
|
const obj = { length: null }; // Results in a new, empty Buffer
|
||||||
|
|
||||||
|
let i = 0;
|
||||||
|
|
||||||
switch (source) {
|
switch (source) {
|
||||||
case 'array':
|
case 'array':
|
||||||
bench.start();
|
bench.start();
|
||||||
for (let i = 0; i < n * 1024; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
Buffer.from(array);
|
Buffer.from(array);
|
||||||
}
|
}
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
break;
|
break;
|
||||||
case 'arraybuffer':
|
case 'arraybuffer':
|
||||||
bench.start();
|
bench.start();
|
||||||
for (let i = 0; i < n * 1024; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
Buffer.from(arrayBuf);
|
Buffer.from(arrayBuf);
|
||||||
}
|
}
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
@ -45,49 +46,49 @@ function main({ len, n, source }) {
|
|||||||
const offset = ~~(len / 4);
|
const offset = ~~(len / 4);
|
||||||
const length = ~~(len / 2);
|
const length = ~~(len / 2);
|
||||||
bench.start();
|
bench.start();
|
||||||
for (let i = 0; i < n * 1024; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
Buffer.from(arrayBuf, offset, length);
|
Buffer.from(arrayBuf, offset, length);
|
||||||
}
|
}
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
break;
|
break;
|
||||||
case 'buffer':
|
case 'buffer':
|
||||||
bench.start();
|
bench.start();
|
||||||
for (let i = 0; i < n * 1024; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
Buffer.from(buffer);
|
Buffer.from(buffer);
|
||||||
}
|
}
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
break;
|
break;
|
||||||
case 'uint8array':
|
case 'uint8array':
|
||||||
bench.start();
|
bench.start();
|
||||||
for (let i = 0; i < n * 1024; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
Buffer.from(uint8array);
|
Buffer.from(uint8array);
|
||||||
}
|
}
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
break;
|
break;
|
||||||
case 'string':
|
case 'string':
|
||||||
bench.start();
|
bench.start();
|
||||||
for (let i = 0; i < n * 1024; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
Buffer.from(str);
|
Buffer.from(str);
|
||||||
}
|
}
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
break;
|
break;
|
||||||
case 'string-utf8':
|
case 'string-utf8':
|
||||||
bench.start();
|
bench.start();
|
||||||
for (let i = 0; i < n * 1024; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
Buffer.from(str, 'utf8');
|
Buffer.from(str, 'utf8');
|
||||||
}
|
}
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
break;
|
break;
|
||||||
case 'string-base64':
|
case 'string-base64':
|
||||||
bench.start();
|
bench.start();
|
||||||
for (let i = 0; i < n * 1024; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
Buffer.from(str, 'base64');
|
Buffer.from(str, 'base64');
|
||||||
}
|
}
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
break;
|
break;
|
||||||
case 'object':
|
case 'object':
|
||||||
bench.start();
|
bench.start();
|
||||||
for (let i = 0; i < n * 1024; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
Buffer.from(obj);
|
Buffer.from(obj);
|
||||||
}
|
}
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
const common = require('../common.js');
|
const common = require('../common.js');
|
||||||
|
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
len: [0, 1, 64, 1024],
|
len: [64, 1024],
|
||||||
n: [1e7]
|
n: [1e6]
|
||||||
});
|
});
|
||||||
|
|
||||||
function main({ len, n }) {
|
function main({ len, n }) {
|
||||||
|
@ -5,7 +5,7 @@ const path = require('path');
|
|||||||
|
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
value: ['@'.charCodeAt(0)],
|
value: ['@'.charCodeAt(0)],
|
||||||
n: [1e7]
|
n: [1e6]
|
||||||
});
|
});
|
||||||
|
|
||||||
function main({ n, value }) {
|
function main({ n, value }) {
|
||||||
@ -13,9 +13,11 @@ function main({ n, value }) {
|
|||||||
path.resolve(__dirname, '../fixtures/alice.html')
|
path.resolve(__dirname, '../fixtures/alice.html')
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let count = 0;
|
||||||
bench.start();
|
bench.start();
|
||||||
for (var i = 0; i < n; i++) {
|
for (var i = 0; i < n; i++) {
|
||||||
aliceBuffer.indexOf(value, 0, undefined);
|
count += aliceBuffer.indexOf(value, 0, undefined);
|
||||||
}
|
}
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
|
return count;
|
||||||
}
|
}
|
||||||
|
@ -6,16 +6,12 @@ const path = require('path');
|
|||||||
const searchStrings = [
|
const searchStrings = [
|
||||||
'@',
|
'@',
|
||||||
'SQ',
|
'SQ',
|
||||||
'10x',
|
|
||||||
'--l',
|
'--l',
|
||||||
'Alice',
|
'Alice',
|
||||||
'Gryphon',
|
'Gryphon',
|
||||||
'Panther',
|
|
||||||
'Ou est ma chatte?',
|
'Ou est ma chatte?',
|
||||||
'found it very',
|
'found it very',
|
||||||
'among mad people',
|
|
||||||
'neighbouring pool',
|
'neighbouring pool',
|
||||||
'Soo--oop',
|
|
||||||
'aaaaaaaaaaaaaaaaa',
|
'aaaaaaaaaaaaaaaaa',
|
||||||
'venture to go near the house till she had brought herself down to',
|
'venture to go near the house till she had brought herself down to',
|
||||||
'</i> to the Caterpillar',
|
'</i> to the Caterpillar',
|
||||||
@ -23,9 +19,9 @@ const searchStrings = [
|
|||||||
|
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
search: searchStrings,
|
search: searchStrings,
|
||||||
encoding: ['undefined', 'utf8', 'ucs2', 'binary'],
|
encoding: ['utf8', 'ucs2'],
|
||||||
type: ['buffer', 'string'],
|
type: ['buffer', 'string'],
|
||||||
n: [100000]
|
n: [5e4]
|
||||||
});
|
});
|
||||||
|
|
||||||
function main({ n, search, encoding, type }) {
|
function main({ n, search, encoding, type }) {
|
||||||
|
@ -4,8 +4,8 @@ const common = require('../common.js');
|
|||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
|
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
size: [16, 512, 1024, 4096, 16386],
|
size: [512, 4096, 16386],
|
||||||
type: ['fast', 'slow'],
|
type: ['fast'],
|
||||||
method: ['for', 'forOf', 'iterator'],
|
method: ['for', 'forOf', 'iterator'],
|
||||||
n: [1e3]
|
n: [1e3]
|
||||||
});
|
});
|
||||||
@ -17,9 +17,10 @@ const methods = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function main({ size, type, method, n }) {
|
function main({ size, type, method, n }) {
|
||||||
const clazz = type === 'fast' ? Buffer : SlowBuffer;
|
const buffer = type === 'fast' ?
|
||||||
const buffer = new clazz(size);
|
Buffer.alloc(size) :
|
||||||
buffer.fill(0);
|
SlowBuffer(size).fill(0);
|
||||||
|
|
||||||
const fn = methods[method || 'for'];
|
const fn = methods[method || 'for'];
|
||||||
|
|
||||||
bench.start();
|
bench.start();
|
||||||
@ -46,7 +47,7 @@ function benchForOf(buffer, n) {
|
|||||||
function benchIterator(buffer, n) {
|
function benchIterator(buffer, n) {
|
||||||
for (var k = 0; k < n; k++) {
|
for (var k = 0; k < n; k++) {
|
||||||
const iter = buffer[Symbol.iterator]();
|
const iter = buffer[Symbol.iterator]();
|
||||||
var cur = iter.next();
|
let cur = iter.next();
|
||||||
|
|
||||||
while (!cur.done) {
|
while (!cur.done) {
|
||||||
assert(cur.value === 0);
|
assert(cur.value === 0);
|
||||||
|
@ -5,23 +5,18 @@ const common = require('../common.js');
|
|||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
encoding: [
|
encoding: [
|
||||||
'ascii',
|
'ascii',
|
||||||
'ASCII',
|
|
||||||
'base64',
|
'base64',
|
||||||
'BASE64',
|
'BASE64',
|
||||||
'binary',
|
'binary',
|
||||||
'BINARY',
|
|
||||||
'hex',
|
'hex',
|
||||||
'HEX',
|
'HEX',
|
||||||
'latin1',
|
'latin1',
|
||||||
'LATIN1',
|
'LATIN1',
|
||||||
'ucs-2',
|
|
||||||
'UCS-2',
|
'UCS-2',
|
||||||
'ucs2',
|
|
||||||
'UCS2',
|
'UCS2',
|
||||||
'utf-16le',
|
'utf-16le',
|
||||||
'UTF-16LE',
|
'UTF-16LE',
|
||||||
'utf-8',
|
'utf-8',
|
||||||
'UTF-8',
|
|
||||||
'utf16le',
|
'utf16le',
|
||||||
'UTF16LE',
|
'UTF16LE',
|
||||||
'utf8',
|
'utf8',
|
||||||
|
@ -3,7 +3,7 @@ const common = require('../common.js');
|
|||||||
|
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
type: ['Double', 'Float'],
|
type: ['Double', 'Float'],
|
||||||
endian: ['BE', 'LE'],
|
endian: ['LE'],
|
||||||
value: ['zero', 'big', 'small', 'inf', 'nan'],
|
value: ['zero', 'big', 'small', 'inf', 'nan'],
|
||||||
n: [1e6]
|
n: [1e6]
|
||||||
});
|
});
|
||||||
|
@ -9,15 +9,16 @@ const types = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
buffer: ['fast', 'slow'],
|
buffer: ['fast'],
|
||||||
type: types,
|
type: types,
|
||||||
n: [1e6],
|
n: [1e6],
|
||||||
byteLength: [1, 2, 3, 4, 5, 6]
|
byteLength: [1, 2, 3, 4, 5, 6]
|
||||||
});
|
});
|
||||||
|
|
||||||
function main({ n, buf, type, byteLength }) {
|
function main({ n, buf, type, byteLength }) {
|
||||||
const clazz = buf === 'fast' ? Buffer : require('buffer').SlowBuffer;
|
const buff = buf === 'fast' ?
|
||||||
const buff = new clazz(8);
|
Buffer.alloc(8) :
|
||||||
|
require('buffer').SlowBuffer(8);
|
||||||
const fn = `read${type || 'IntBE'}`;
|
const fn = `read${type || 'IntBE'}`;
|
||||||
|
|
||||||
buff.writeDoubleLE(0, 0);
|
buff.writeDoubleLE(0, 0);
|
||||||
|
@ -16,21 +16,18 @@ const types = [
|
|||||||
'Int16BE',
|
'Int16BE',
|
||||||
'Int32LE',
|
'Int32LE',
|
||||||
'Int32BE',
|
'Int32BE',
|
||||||
'FloatLE',
|
|
||||||
'FloatBE',
|
|
||||||
'DoubleLE',
|
|
||||||
'DoubleBE',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
buffer: ['fast', 'slow'],
|
buffer: ['fast'],
|
||||||
type: types,
|
type: types,
|
||||||
n: [1e6]
|
n: [1e6]
|
||||||
});
|
});
|
||||||
|
|
||||||
function main({ n, buf, type }) {
|
function main({ n, buf, type }) {
|
||||||
const clazz = buf === 'fast' ? Buffer : require('buffer').SlowBuffer;
|
const buff = buf === 'fast' ?
|
||||||
const buff = new clazz(8);
|
Buffer.alloc(8) :
|
||||||
|
require('buffer').SlowBuffer(8);
|
||||||
const fn = `read${type || 'UInt8'}`;
|
const fn = `read${type || 'UInt8'}`;
|
||||||
|
|
||||||
buff.writeDoubleLE(0, 0);
|
buff.writeDoubleLE(0, 0);
|
||||||
|
@ -4,7 +4,7 @@ const SlowBuffer = require('buffer').SlowBuffer;
|
|||||||
|
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
type: ['fast', 'slow'],
|
type: ['fast', 'slow'],
|
||||||
n: [1024]
|
n: [1e6]
|
||||||
});
|
});
|
||||||
|
|
||||||
const buf = Buffer.allocUnsafe(1024);
|
const buf = Buffer.allocUnsafe(1024);
|
||||||
@ -13,7 +13,7 @@ const slowBuf = new SlowBuffer(1024);
|
|||||||
function main({ n, type }) {
|
function main({ n, type }) {
|
||||||
const b = type === 'fast' ? buf : slowBuf;
|
const b = type === 'fast' ? buf : slowBuf;
|
||||||
bench.start();
|
bench.start();
|
||||||
for (var i = 0; i < n * 1024; i++) {
|
for (var i = 0; i < n; i++) {
|
||||||
b.slice(10, 256);
|
b.slice(10, 256);
|
||||||
}
|
}
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
|
@ -5,8 +5,8 @@ const common = require('../common.js');
|
|||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
aligned: ['true', 'false'],
|
aligned: ['true', 'false'],
|
||||||
method: ['swap16', 'swap32', 'swap64'/* , 'htons', 'htonl', 'htonll' */],
|
method: ['swap16', 'swap32', 'swap64'/* , 'htons', 'htonl', 'htonll' */],
|
||||||
len: [8, 64, 128, 256, 512, 768, 1024, 1536, 2056, 4096, 8192],
|
len: [64, 256, 768, 1024, 2056, 8192],
|
||||||
n: [5e7]
|
n: [1e6]
|
||||||
});
|
});
|
||||||
|
|
||||||
// The htons and htonl methods below are used to benchmark the
|
// The htons and htonl methods below are used to benchmark the
|
||||||
|
@ -4,7 +4,7 @@ const common = require('../common.js');
|
|||||||
|
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
n: [1e4],
|
n: [1e4],
|
||||||
len: [0, 10, 256, 4 * 1024]
|
len: [0, 256, 4 * 1024]
|
||||||
});
|
});
|
||||||
|
|
||||||
function main({ n, len }) {
|
function main({ n, len }) {
|
||||||
|
@ -3,10 +3,10 @@
|
|||||||
const common = require('../common.js');
|
const common = require('../common.js');
|
||||||
|
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
encoding: ['', 'utf8', 'ascii', 'latin1', 'binary', 'hex', 'UCS-2'],
|
encoding: ['utf8', 'ascii', 'latin1', 'hex', 'UCS-2'],
|
||||||
args: [0, 1, 2, 3],
|
args: [0, 1, 3],
|
||||||
len: [0, 1, 64, 1024],
|
len: [1, 64, 1024],
|
||||||
n: [1e7]
|
n: [1e6]
|
||||||
});
|
});
|
||||||
|
|
||||||
function main({ encoding, args, len, n }) {
|
function main({ encoding, args, len, n }) {
|
||||||
|
@ -3,36 +3,40 @@
|
|||||||
const common = require('../common.js');
|
const common = require('../common.js');
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
encoding: [
|
encoding: [
|
||||||
'', 'utf8', 'ascii', 'hex', 'UCS-2', 'utf16le', 'latin1', 'binary',
|
'', 'utf8', 'ascii', 'hex', 'utf16le', 'latin1',
|
||||||
],
|
],
|
||||||
args: [ '', 'offset', 'offset+length' ],
|
args: [ '', 'offset', 'offset+length' ],
|
||||||
len: [10, 2048],
|
len: [2048],
|
||||||
n: [1e7]
|
n: [1e6]
|
||||||
});
|
});
|
||||||
|
|
||||||
function main({ len, n, encoding, args }) {
|
function main({ len, n, encoding, args }) {
|
||||||
const string = 'a'.repeat(len);
|
let string;
|
||||||
|
let start = 0;
|
||||||
const buf = Buffer.allocUnsafe(len);
|
const buf = Buffer.allocUnsafe(len);
|
||||||
|
|
||||||
var i;
|
var i;
|
||||||
|
|
||||||
switch (args) {
|
switch (args) {
|
||||||
case 'offset':
|
case 'offset':
|
||||||
|
string = 'a'.repeat(Math.floor(len / 2));
|
||||||
|
start = len - string.length;
|
||||||
if (encoding) {
|
if (encoding) {
|
||||||
bench.start();
|
bench.start();
|
||||||
for (i = 0; i < n; ++i) {
|
for (i = 0; i < n; ++i) {
|
||||||
buf.write(string, 0, encoding);
|
buf.write(string, start, encoding);
|
||||||
}
|
}
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
} else {
|
} else {
|
||||||
bench.start();
|
bench.start();
|
||||||
for (i = 0; i < n; ++i) {
|
for (i = 0; i < n; ++i) {
|
||||||
buf.write(string, 0);
|
buf.write(string, start);
|
||||||
}
|
}
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'offset+length':
|
case 'offset+length':
|
||||||
|
string = 'a'.repeat(len);
|
||||||
if (encoding) {
|
if (encoding) {
|
||||||
bench.start();
|
bench.start();
|
||||||
for (i = 0; i < n; ++i) {
|
for (i = 0; i < n; ++i) {
|
||||||
@ -48,6 +52,7 @@ function main({ len, n, encoding, args }) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
string = 'a'.repeat(len);
|
||||||
if (encoding) {
|
if (encoding) {
|
||||||
bench.start();
|
bench.start();
|
||||||
for (i = 0; i < n; ++i) {
|
for (i = 0; i < n; ++i) {
|
||||||
|
@ -27,7 +27,7 @@ const types = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
buffer: ['fast', 'slow'],
|
buffer: ['fast'],
|
||||||
type: types,
|
type: types,
|
||||||
n: [1e6]
|
n: [1e6]
|
||||||
});
|
});
|
||||||
@ -71,8 +71,9 @@ const byteLength = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function main({ n, buf, type }) {
|
function main({ n, buf, type }) {
|
||||||
const clazz = buf === 'fast' ? Buffer : require('buffer').SlowBuffer;
|
const buff = buf === 'fast' ?
|
||||||
const buff = new clazz(8);
|
Buffer.alloc(8) :
|
||||||
|
require('buffer').SlowBuffer(8);
|
||||||
const fn = `write${type || 'UInt8'}`;
|
const fn = `write${type || 'UInt8'}`;
|
||||||
|
|
||||||
if (!/\d/.test(fn))
|
if (!/\d/.test(fn))
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
const common = require('../common.js');
|
const common = require('../common.js');
|
||||||
|
|
||||||
const bench = common.createBenchmark(main, {
|
const bench = common.createBenchmark(main, {
|
||||||
n: [1024],
|
n: [1e6],
|
||||||
type: ['buffer', 'string']
|
type: ['buffer', 'string']
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -14,6 +14,6 @@ function main({ n, type }) {
|
|||||||
const data = type === 'buffer' ? zeroBuffer : zeroString;
|
const data = type === 'buffer' ? zeroBuffer : zeroString;
|
||||||
|
|
||||||
bench.start();
|
bench.start();
|
||||||
for (var i = 0; i < n * 1024; i++) Buffer.from(data);
|
for (var i = 0; i < n; i++) Buffer.from(data);
|
||||||
bench.end(n);
|
bench.end(n);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user