summaryrefslogtreecommitdiff
path: root/benchmark
diff options
context:
space:
mode:
authorRuben Bridgewater <ruben@bridgewater.de>2018-01-23 13:17:39 +0100
committerRuben Bridgewater <ruben@bridgewater.de>2018-02-01 10:48:59 +0100
commit794e489eeadbe40fec7928ed9b8f25d7019d795e (patch)
treebd6dacff0fc1940ea46e3f3746d3fc5d43822548 /benchmark
parentcd7b2c434c8e0936e8305d7aa3baab874ad1f0dc (diff)
downloadandroid-node-v8-794e489eeadbe40fec7928ed9b8f25d7019d795e.tar.gz
android-node-v8-794e489eeadbe40fec7928ed9b8f25d7019d795e.tar.bz2
android-node-v8-794e489eeadbe40fec7928ed9b8f25d7019d795e.zip
benchmark: (buffer) refactor
PR-URL: https://github.com/nodejs/node/pull/18320 Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'benchmark')
-rw-r--r--benchmark/buffers/buffer-bytelength.js3
-rw-r--r--benchmark/buffers/buffer-compare-offset.js12
-rw-r--r--benchmark/buffers/buffer-creation.js43
-rw-r--r--benchmark/buffers/buffer-hex.js5
-rw-r--r--benchmark/buffers/buffer-iterate.js18
-rw-r--r--benchmark/buffers/buffer-read-float.js23
-rw-r--r--benchmark/buffers/buffer-read-with-byteLength.js20
-rw-r--r--benchmark/buffers/buffer-read.js12
-rw-r--r--benchmark/buffers/buffer-write.js31
-rw-r--r--benchmark/buffers/buffer_zero.js9
10 files changed, 64 insertions, 112 deletions
diff --git a/benchmark/buffers/buffer-bytelength.js b/benchmark/buffers/buffer-bytelength.js
index 0617b4feb3..fa8852a233 100644
--- a/benchmark/buffers/buffer-bytelength.js
+++ b/benchmark/buffers/buffer-bytelength.js
@@ -17,10 +17,9 @@ const chars = [
function main({ n, len, encoding }) {
var strings = [];
- var results;
+ var results = [ len * 16 ];
if (encoding === 'buffer') {
strings = [ Buffer.alloc(len * 16, 'a') ];
- results = [ len * 16 ];
} else {
for (const string of chars) {
// Strings must be built differently, depending on encoding
diff --git a/benchmark/buffers/buffer-compare-offset.js b/benchmark/buffers/buffer-compare-offset.js
index 850fe11d3f..551fcd2f0c 100644
--- a/benchmark/buffers/buffer-compare-offset.js
+++ b/benchmark/buffers/buffer-compare-offset.js
@@ -8,26 +8,22 @@ const bench = common.createBenchmark(main, {
});
function compareUsingSlice(b0, b1, len, iter) {
- var i;
- bench.start();
- for (i = 0; i < iter; i++)
+ for (var i = 0; i < iter; i++)
Buffer.compare(b0.slice(1, len), b1.slice(1, len));
- bench.end(iter / 1e6);
}
function compareUsingOffset(b0, b1, len, iter) {
- var i;
- bench.start();
- for (i = 0; i < iter; i++)
+ for (var i = 0; i < iter; i++)
b0.compare(b1, 1, len, 1, len);
- bench.end(iter / 1e6);
}
function main({ millions, size, method }) {
const iter = millions * 1e6;
const fn = method === 'slice' ? compareUsingSlice : compareUsingOffset;
+ bench.start();
fn(Buffer.alloc(size, 'a'),
Buffer.alloc(size, 'b'),
size >> 1,
iter);
+ bench.end(millions);
}
diff --git a/benchmark/buffers/buffer-creation.js b/benchmark/buffers/buffer-creation.js
index 73e620955e..a7b340131e 100644
--- a/benchmark/buffers/buffer-creation.js
+++ b/benchmark/buffers/buffer-creation.js
@@ -16,51 +16,38 @@ const bench = common.createBenchmark(main, {
});
function main({ len, n, type }) {
+ let fn, i;
switch (type) {
case '':
case 'fast-alloc':
- bench.start();
- for (let i = 0; i < n * 1024; i++) {
- Buffer.alloc(len);
- }
- bench.end(n);
+ fn = Buffer.alloc;
break;
case 'fast-alloc-fill':
bench.start();
- for (let i = 0; i < n * 1024; i++) {
+ for (i = 0; i < n * 1024; i++) {
Buffer.alloc(len, 0);
}
bench.end(n);
- break;
+ return;
case 'fast-allocUnsafe':
- bench.start();
- for (let i = 0; i < n * 1024; i++) {
- Buffer.allocUnsafe(len);
- }
- bench.end(n);
+ fn = Buffer.allocUnsafe;
break;
case 'slow-allocUnsafe':
- bench.start();
- for (let i = 0; i < n * 1024; i++) {
- Buffer.allocUnsafeSlow(len);
- }
- bench.end(n);
+ fn = Buffer.allocUnsafeSlow;
break;
case 'slow':
- bench.start();
- for (let i = 0; i < n * 1024; i++) {
- SlowBuffer(len);
- }
- bench.end(n);
+ fn = SlowBuffer;
break;
case 'buffer()':
- bench.start();
- for (let i = 0; i < n * 1024; i++) {
- Buffer(len);
- }
- bench.end(n);
+ fn = Buffer;
break;
default:
- assert.fail(null, null, 'Should not get here');
+ assert.fail('Should not get here');
+ }
+
+ bench.start();
+ for (i = 0; i < n * 1024; i++) {
+ fn(len);
}
+ bench.end(n);
}
diff --git a/benchmark/buffers/buffer-hex.js b/benchmark/buffers/buffer-hex.js
index 1bdef81139..4d87313961 100644
--- a/benchmark/buffers/buffer-hex.js
+++ b/benchmark/buffers/buffer-hex.js
@@ -9,15 +9,16 @@ const bench = common.createBenchmark(main, {
function main({ len, n }) {
const buf = Buffer.alloc(len);
+ var i;
- for (let i = 0; i < buf.length; i++)
+ for (i = 0; i < buf.length; i++)
buf[i] = i & 0xff;
const hex = buf.toString('hex');
bench.start();
- for (let i = 0; i < n; i += 1)
+ for (i = 0; i < n; i += 1)
Buffer.from(hex, 'hex');
bench.end(n);
diff --git a/benchmark/buffers/buffer-iterate.js b/benchmark/buffers/buffer-iterate.js
index 8531e1cae8..7a275b0bcb 100644
--- a/benchmark/buffers/buffer-iterate.js
+++ b/benchmark/buffers/buffer-iterate.js
@@ -20,36 +20,30 @@ function main({ size, type, method, n }) {
const clazz = type === 'fast' ? Buffer : SlowBuffer;
const buffer = new clazz(size);
buffer.fill(0);
- methods[method || 'for'](buffer, n);
-}
-
+ const fn = methods[method || 'for'];
-function benchFor(buffer, n) {
bench.start();
+ fn(buffer, n);
+ bench.end(n);
+}
+function benchFor(buffer, n) {
for (var k = 0; k < n; k++) {
for (var i = 0; i < buffer.length; i++) {
assert(buffer[i] === 0);
}
}
-
- bench.end(n);
}
function benchForOf(buffer, n) {
- bench.start();
-
for (var k = 0; k < n; k++) {
for (const b of buffer) {
assert(b === 0);
}
}
- bench.end(n);
}
function benchIterator(buffer, n) {
- bench.start();
-
for (var k = 0; k < n; k++) {
const iter = buffer[Symbol.iterator]();
var cur = iter.next();
@@ -60,6 +54,4 @@ function benchIterator(buffer, n) {
}
}
-
- bench.end(n);
}
diff --git a/benchmark/buffers/buffer-read-float.js b/benchmark/buffers/buffer-read-float.js
index 5dda2486c6..afd9edf557 100644
--- a/benchmark/buffers/buffer-read-float.js
+++ b/benchmark/buffers/buffer-read-float.js
@@ -9,12 +9,10 @@ const bench = common.createBenchmark(main, {
millions: [1]
});
-function main(conf) {
- const noAssert = conf.noAssert === 'true';
- const len = +conf.millions * 1e6;
+function main({ noAssert, millions, type, endian, value }) {
+ noAssert = noAssert === 'true';
+ type = type || 'Double';
const buff = Buffer.alloc(8);
- const type = conf.type || 'Double';
- const endian = conf.endian;
const fn = `read${type}${endian}`;
const values = {
Double: {
@@ -32,15 +30,12 @@ function main(conf) {
nan: NaN,
},
};
- const value = values[type][conf.value];
- buff[`write${type}${endian}`](value, 0, noAssert);
- const testFunction = new Function('buff', `
- for (var i = 0; i !== ${len}; i++) {
- buff.${fn}(0, ${JSON.stringify(noAssert)});
- }
- `);
+ buff[`write${type}${endian}`](values[type][value], 0, noAssert);
+
bench.start();
- testFunction(buff);
- bench.end(len / 1e6);
+ for (var i = 0; i !== millions * 1e6; i++) {
+ buff[fn](0, noAssert);
+ }
+ bench.end(millions);
}
diff --git a/benchmark/buffers/buffer-read-with-byteLength.js b/benchmark/buffers/buffer-read-with-byteLength.js
index 2a659c1bec..9fe5e6f4bf 100644
--- a/benchmark/buffers/buffer-read-with-byteLength.js
+++ b/benchmark/buffers/buffer-read-with-byteLength.js
@@ -16,21 +16,17 @@ const bench = common.createBenchmark(main, {
byteLength: [1, 2, 4, 6]
});
-function main(conf) {
- const noAssert = conf.noAssert === 'true';
- const len = conf.millions * 1e6;
- const clazz = conf.buf === 'fast' ? Buffer : require('buffer').SlowBuffer;
+function main({ millions, noAssert, buf, type, byteLength }) {
+ noAssert = noAssert === 'true';
+ type = type || 'UInt8';
+ const clazz = buf === 'fast' ? Buffer : require('buffer').SlowBuffer;
const buff = new clazz(8);
- const type = conf.type || 'UInt8';
const fn = `read${type}`;
buff.writeDoubleLE(0, 0, noAssert);
- const testFunction = new Function('buff', `
- for (var i = 0; i !== ${len}; i++) {
- buff.${fn}(0, ${conf.byteLength}, ${JSON.stringify(noAssert)});
- }
- `);
bench.start();
- testFunction(buff);
- bench.end(len / 1e6);
+ for (var i = 0; i !== millions * 1e6; i++) {
+ buff[fn](0, byteLength, noAssert);
+ }
+ bench.end(millions);
}
diff --git a/benchmark/buffers/buffer-read.js b/benchmark/buffers/buffer-read.js
index 41e842f312..868f5cede8 100644
--- a/benchmark/buffers/buffer-read.js
+++ b/benchmark/buffers/buffer-read.js
@@ -27,18 +27,14 @@ const bench = common.createBenchmark(main, {
function main({ noAssert, millions, buf, type }) {
noAssert = noAssert === 'true';
- const len = millions * 1e6;
const clazz = buf === 'fast' ? Buffer : require('buffer').SlowBuffer;
const buff = new clazz(8);
const fn = `read${type || 'UInt8'}`;
buff.writeDoubleLE(0, 0, noAssert);
- const testFunction = new Function('buff', `
- for (var i = 0; i !== ${len}; i++) {
- buff.${fn}(0, ${JSON.stringify(noAssert)});
- }
- `);
bench.start();
- testFunction(buff);
- bench.end(len / 1e6);
+ for (var i = 0; i !== millions * 1e6; i++) {
+ buff[fn](0, noAssert);
+ }
+ bench.end(millions);
}
diff --git a/benchmark/buffers/buffer-write.js b/benchmark/buffers/buffer-write.js
index ce2fbe3103..823e95bf15 100644
--- a/benchmark/buffers/buffer-write.js
+++ b/benchmark/buffers/buffer-write.js
@@ -46,36 +46,29 @@ const mod = {
};
function main({ noAssert, millions, buf, type }) {
- const len = millions * 1e6;
const clazz = buf === 'fast' ? Buffer : require('buffer').SlowBuffer;
const buff = new clazz(8);
const fn = `write${type || 'UInt8'}`;
if (/Int/.test(fn))
- benchInt(buff, fn, len, noAssert);
+ benchInt(buff, fn, millions, noAssert);
else
- benchFloat(buff, fn, len, noAssert);
+ benchFloat(buff, fn, millions, noAssert);
}
-function benchInt(buff, fn, len, noAssert) {
+function benchInt(buff, fn, millions, noAssert) {
const m = mod[fn];
- const testFunction = new Function('buff', `
- for (var i = 0; i !== ${len}; i++) {
- buff.${fn}(i & ${m}, 0, ${noAssert});
- }
- `);
bench.start();
- testFunction(buff);
- bench.end(len / 1e6);
+ for (var i = 0; i !== millions * 1e6; i++) {
+ buff[fn](i & m, 0, noAssert);
+ }
+ bench.end(millions);
}
-function benchFloat(buff, fn, len, noAssert) {
- const testFunction = new Function('buff', `
- for (var i = 0; i !== ${len}; i++) {
- buff.${fn}(i, 0, ${noAssert});
- }
- `);
+function benchFloat(buff, fn, millions, noAssert) {
bench.start();
- testFunction(buff);
- bench.end(len / 1e6);
+ for (var i = 0; i !== millions * 1e6; i++) {
+ buff[fn](i, 0, noAssert);
+ }
+ bench.end(millions);
}
diff --git a/benchmark/buffers/buffer_zero.js b/benchmark/buffers/buffer_zero.js
index 06b68c313f..1263732dce 100644
--- a/benchmark/buffers/buffer_zero.js
+++ b/benchmark/buffers/buffer_zero.js
@@ -11,12 +11,9 @@ const zeroBuffer = Buffer.alloc(0);
const zeroString = '';
function main({ n, type }) {
- bench.start();
-
- if (type === 'buffer')
- for (let i = 0; i < n * 1024; i++) Buffer.from(zeroBuffer);
- else if (type === 'string')
- for (let i = 0; i < n * 1024; i++) Buffer.from(zeroString);
+ const data = type === 'buffer' ? zeroBuffer : zeroString;
+ bench.start();
+ for (var i = 0; i < n * 1024; i++) Buffer.from(data);
bench.end(n);
}