summaryrefslogtreecommitdiff
path: root/benchmark/es
diff options
context:
space:
mode:
authorRuben Bridgewater <ruben@bridgewater.de>2018-01-23 13:18:30 +0100
committerRuben Bridgewater <ruben@bridgewater.de>2018-02-01 10:49:02 +0100
commit2072f343ad5c7f8a74e480c625b5b4df3d071bf1 (patch)
treeb80b147e612b5bb11475a79249d7e03de87969cb /benchmark/es
parent1a8ed225b2ce66451ec34705f0d96438671e0f70 (diff)
downloadandroid-node-v8-2072f343ad5c7f8a74e480c625b5b4df3d071bf1.tar.gz
android-node-v8-2072f343ad5c7f8a74e480c625b5b4df3d071bf1.tar.bz2
android-node-v8-2072f343ad5c7f8a74e480c625b5b4df3d071bf1.zip
benchmark: (es) refactor
PR-URL: https://github.com/nodejs/node/pull/18320 Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'benchmark/es')
-rw-r--r--benchmark/es/defaultparams-bench.js24
-rw-r--r--benchmark/es/destructuring-bench.js20
-rw-r--r--benchmark/es/destructuring-object-bench.js20
-rw-r--r--benchmark/es/foreach-bench.js43
-rw-r--r--benchmark/es/map-bench.js58
-rw-r--r--benchmark/es/restparams-bench.js38
-rw-r--r--benchmark/es/spread-bench.js15
-rw-r--r--benchmark/es/string-concatenations.js3
-rw-r--r--benchmark/es/string-repeat.js2
9 files changed, 94 insertions, 129 deletions
diff --git a/benchmark/es/defaultparams-bench.js b/benchmark/es/defaultparams-bench.js
index ce2132718c..a00b50137c 100644
--- a/benchmark/es/defaultparams-bench.js
+++ b/benchmark/es/defaultparams-bench.js
@@ -20,37 +20,31 @@ function defaultParams(x = 1, y = 2) {
assert.strictEqual(y, 2);
}
-function runOldStyleDefaults(n) {
-
- var i = 0;
+function runOldStyleDefaults(millions) {
bench.start();
- for (; i < n; i++)
+ for (var i = 0; i < millions * 1e6; i++)
oldStyleDefaults();
- bench.end(n / 1e6);
+ bench.end(millions);
}
-function runDefaultParams(n) {
-
- var i = 0;
+function runDefaultParams(millions) {
bench.start();
- for (; i < n; i++)
+ for (var i = 0; i < millions * 1e6; i++)
defaultParams();
- bench.end(n / 1e6);
+ bench.end(millions);
}
function main({ millions, method }) {
- const n = millions * 1e6;
-
switch (method) {
case '':
// Empty string falls through to next line as default, mostly for tests.
case 'withoutdefaults':
- runOldStyleDefaults(n);
+ runOldStyleDefaults(millions);
break;
case 'withdefaults':
- runDefaultParams(n);
+ runDefaultParams(millions);
break;
default:
- throw new Error('Unexpected method');
+ throw new Error(`Unexpected method "${method}"`);
}
}
diff --git a/benchmark/es/destructuring-bench.js b/benchmark/es/destructuring-bench.js
index f244506860..2168940bdc 100644
--- a/benchmark/es/destructuring-bench.js
+++ b/benchmark/es/destructuring-bench.js
@@ -8,10 +8,10 @@ const bench = common.createBenchmark(main, {
millions: [100]
});
-function runSwapManual(n) {
+function runSwapManual(millions) {
var x, y, r;
bench.start();
- for (var i = 0; i < n; i++) {
+ for (var i = 0; i < millions * 1e6; i++) {
x = 1, y = 2;
r = x;
x = y;
@@ -19,34 +19,32 @@ function runSwapManual(n) {
assert.strictEqual(x, 2);
assert.strictEqual(y, 1);
}
- bench.end(n / 1e6);
+ bench.end(millions);
}
-function runSwapDestructured(n) {
+function runSwapDestructured(millions) {
var x, y;
bench.start();
- for (var i = 0; i < n; i++) {
+ for (var i = 0; i < millions * 1e6; i++) {
x = 1, y = 2;
[x, y] = [y, x];
assert.strictEqual(x, 2);
assert.strictEqual(y, 1);
}
- bench.end(n / 1e6);
+ bench.end(millions);
}
function main({ millions, method }) {
- const n = millions * 1e6;
-
switch (method) {
case '':
// Empty string falls through to next line as default, mostly for tests.
case 'swap':
- runSwapManual(n);
+ runSwapManual(millions);
break;
case 'destructure':
- runSwapDestructured(n);
+ runSwapDestructured(millions);
break;
default:
- throw new Error('Unexpected method');
+ throw new Error(`Unexpected method "${method}"`);
}
}
diff --git a/benchmark/es/destructuring-object-bench.js b/benchmark/es/destructuring-object-bench.js
index 73687f018d..a84977c59b 100644
--- a/benchmark/es/destructuring-object-bench.js
+++ b/benchmark/es/destructuring-object-bench.js
@@ -7,45 +7,43 @@ const bench = common.createBenchmark(main, {
millions: [100]
});
-function runNormal(n) {
+function runNormal(millions) {
var i = 0;
const o = { x: 0, y: 1 };
bench.start();
- for (; i < n; i++) {
+ for (; i < millions * 1e6; i++) {
/* eslint-disable no-unused-vars */
const x = o.x;
const y = o.y;
const r = o.r || 2;
/* eslint-enable no-unused-vars */
}
- bench.end(n / 1e6);
+ bench.end(millions);
}
-function runDestructured(n) {
+function runDestructured(millions) {
var i = 0;
const o = { x: 0, y: 1 };
bench.start();
- for (; i < n; i++) {
+ for (; i < millions * 1e6; i++) {
/* eslint-disable no-unused-vars */
const { x, y, r = 2 } = o;
/* eslint-enable no-unused-vars */
}
- bench.end(n / 1e6);
+ bench.end(millions);
}
function main({ millions, method }) {
- const n = millions * 1e6;
-
switch (method) {
case '':
// Empty string falls through to next line as default, mostly for tests.
case 'normal':
- runNormal(n);
+ runNormal(millions);
break;
case 'destructureObject':
- runDestructured(n);
+ runDestructured(millions);
break;
default:
- throw new Error('Unexpected method');
+ throw new Error(`Unexpected method "${method}"`);
}
}
diff --git a/benchmark/es/foreach-bench.js b/benchmark/es/foreach-bench.js
index c7caa7cee6..e9179ed8de 100644
--- a/benchmark/es/foreach-bench.js
+++ b/benchmark/es/foreach-bench.js
@@ -8,56 +8,51 @@ const bench = common.createBenchmark(main, {
millions: [5]
});
-function useFor(n, items, count) {
- var i, j;
+function useFor(millions, items, count) {
bench.start();
- for (i = 0; i < n; i++) {
- for (j = 0; j < count; j++) {
+ for (var i = 0; i < millions * 1e6; i++) {
+ for (var j = 0; j < count; j++) {
/* eslint-disable no-unused-vars */
const item = items[j];
/* esline-enable no-unused-vars */
}
}
- bench.end(n / 1e6);
+ bench.end(millions);
}
-function useForOf(n, items) {
- var i, item;
+function useForOf(millions, items) {
+ var item;
bench.start();
- for (i = 0; i < n; i++) {
+ for (var i = 0; i < millions * 1e6; i++) {
for (item of items) {}
}
- bench.end(n / 1e6);
+ bench.end(millions);
}
-function useForIn(n, items) {
- var i, j, item;
+function useForIn(millions, items) {
bench.start();
- for (i = 0; i < n; i++) {
- for (j in items) {
+ for (var i = 0; i < millions * 1e6; i++) {
+ for (var j in items) {
/* eslint-disable no-unused-vars */
- item = items[j];
+ const item = items[j];
/* esline-enable no-unused-vars */
}
}
- bench.end(n / 1e6);
+ bench.end(millions);
}
-function useForEach(n, items) {
- var i;
+function useForEach(millions, items) {
bench.start();
- for (i = 0; i < n; i++) {
+ for (var i = 0; i < millions * 1e6; i++) {
items.forEach((item) => {});
}
- bench.end(n / 1e6);
+ bench.end(millions);
}
function main({ millions, count, method }) {
- const n = millions * 1e6;
const items = new Array(count);
- var i;
var fn;
- for (i = 0; i < count; i++)
+ for (var i = 0; i < count; i++)
items[i] = i;
switch (method) {
@@ -76,7 +71,7 @@ function main({ millions, count, method }) {
fn = useForEach;
break;
default:
- throw new Error('Unexpected method');
+ throw new Error(`Unexpected method "${method}"`);
}
- fn(n, items, count);
+ fn(millions, items, count);
}
diff --git a/benchmark/es/map-bench.js b/benchmark/es/map-bench.js
index ba8e35c2eb..445031aa98 100644
--- a/benchmark/es/map-bench.js
+++ b/benchmark/es/map-bench.js
@@ -11,63 +11,59 @@ const bench = common.createBenchmark(main, {
millions: [1]
});
-function runObject(n) {
+function runObject(millions) {
const m = {};
- var i = 0;
bench.start();
- for (; i < n; i++) {
+ for (var i = 0; i < millions * 1e6; i++) {
m[`i${i}`] = i;
m[`s${i}`] = String(i);
assert.strictEqual(String(m[`i${i}`]), m[`s${i}`]);
m[`i${i}`] = undefined;
m[`s${i}`] = undefined;
}
- bench.end(n / 1e6);
+ bench.end(millions);
}
-function runNullProtoObject(n) {
+function runNullProtoObject(millions) {
const m = Object.create(null);
- var i = 0;
bench.start();
- for (; i < n; i++) {
+ for (var i = 0; i < millions * 1e6; i++) {
m[`i${i}`] = i;
m[`s${i}`] = String(i);
assert.strictEqual(String(m[`i${i}`]), m[`s${i}`]);
m[`i${i}`] = undefined;
m[`s${i}`] = undefined;
}
- bench.end(n / 1e6);
+ bench.end(millions);
}
-function runNullProtoLiteralObject(n) {
+function runNullProtoLiteralObject(millions) {
const m = { __proto__: null };
- var i = 0;
bench.start();
- for (; i < n; i++) {
+ for (var i = 0; i < millions * 1e6; i++) {
m[`i${i}`] = i;
m[`s${i}`] = String(i);
assert.strictEqual(String(m[`i${i}`]), m[`s${i}`]);
m[`i${i}`] = undefined;
m[`s${i}`] = undefined;
}
- bench.end(n / 1e6);
+ bench.end(millions);
}
function StorageObject() {}
StorageObject.prototype = Object.create(null);
-function runStorageObject(n) {
+function runStorageObject(millions) {
const m = new StorageObject();
- var i = 0;
bench.start();
- for (; i < n; i++) {
+ for (var i = 0; i < millions * 1e6; i++) {
m[`i${i}`] = i;
m[`s${i}`] = String(i);
assert.strictEqual(String(m[`i${i}`]), m[`s${i}`]);
m[`i${i}`] = undefined;
m[`s${i}`] = undefined;
}
- bench.end(n / 1e6);
+ bench.end(millions);
}
function fakeMap() {
@@ -80,59 +76,55 @@ function fakeMap() {
};
}
-function runFakeMap(n) {
+function runFakeMap(millions) {
const m = fakeMap();
- var i = 0;
bench.start();
- for (; i < n; i++) {
+ for (var i = 0; i < millions * 1e6; i++) {
m.set(`i${i}`, i);
m.set(`s${i}`, String(i));
assert.strictEqual(String(m.get(`i${i}`)), m.get(`s${i}`));
m.set(`i${i}`, undefined);
m.set(`s${i}`, undefined);
}
- bench.end(n / 1e6);
+ bench.end(millions);
}
-function runMap(n) {
+function runMap(millions) {
const m = new Map();
- var i = 0;
bench.start();
- for (; i < n; i++) {
+ for (var i = 0; i < millions * 1e6; i++) {
m.set(`i${i}`, i);
m.set(`s${i}`, String(i));
assert.strictEqual(String(m.get(`i${i}`)), m.get(`s${i}`));
m.set(`i${i}`, undefined);
m.set(`s${i}`, undefined);
}
- bench.end(n / 1e6);
+ bench.end(millions);
}
function main({ millions, method }) {
- const n = millions * 1e6;
-
switch (method) {
case '':
// Empty string falls through to next line as default, mostly for tests.
case 'object':
- runObject(n);
+ runObject(millions);
break;
case 'nullProtoObject':
- runNullProtoObject(n);
+ runNullProtoObject(millions);
break;
case 'nullProtoLiteralObject':
- runNullProtoLiteralObject(n);
+ runNullProtoLiteralObject(millions);
break;
case 'storageObject':
- runStorageObject(n);
+ runStorageObject(millions);
break;
case 'fakeMap':
- runFakeMap(n);
+ runFakeMap(millions);
break;
case 'map':
- runMap(n);
+ runMap(millions);
break;
default:
- throw new Error('Unexpected method');
+ throw new Error(`Unexpected method "${method}"`);
}
}
diff --git a/benchmark/es/restparams-bench.js b/benchmark/es/restparams-bench.js
index 78299d292c..6ad766f10f 100644
--- a/benchmark/es/restparams-bench.js
+++ b/benchmark/es/restparams-bench.js
@@ -33,49 +33,39 @@ function useArguments() {
assert.strictEqual(arguments[3], 'b');
}
-function runCopyArguments(n) {
-
- var i = 0;
- bench.start();
- for (; i < n; i++)
+function runCopyArguments(millions) {
+ for (var i = 0; i < millions * 1e6; i++)
copyArguments(1, 2, 'a', 'b');
- bench.end(n / 1e6);
}
-function runRestArguments(n) {
-
- var i = 0;
- bench.start();
- for (; i < n; i++)
+function runRestArguments(millions) {
+ for (var i = 0; i < millions * 1e6; i++)
restArguments(1, 2, 'a', 'b');
- bench.end(n / 1e6);
}
-function runUseArguments(n) {
-
- var i = 0;
- bench.start();
- for (; i < n; i++)
+function runUseArguments(millions) {
+ for (var i = 0; i < millions * 1e6; i++)
useArguments(1, 2, 'a', 'b');
- bench.end(n / 1e6);
}
function main({ millions, method }) {
- const n = millions * 1e6;
-
+ var fn;
switch (method) {
case '':
// Empty string falls through to next line as default, mostly for tests.
case 'copy':
- runCopyArguments(n);
+ fn = runCopyArguments;
break;
case 'rest':
- runRestArguments(n);
+ fn = runRestArguments;
break;
case 'arguments':
- runUseArguments(n);
+ fn = runUseArguments;
break;
default:
- throw new Error('Unexpected method');
+ throw new Error(`Unexpected method "${method}"`);
}
+ bench.start();
+ fn(millions);
+ bench.end(millions);
}
diff --git a/benchmark/es/spread-bench.js b/benchmark/es/spread-bench.js
index 3c6cc93ea4..067299cd65 100644
--- a/benchmark/es/spread-bench.js
+++ b/benchmark/es/spread-bench.js
@@ -24,7 +24,6 @@ function makeTest(count, rest) {
}
function main({ millions, context, count, rest, method }) {
- const n = millions * 1e6;
const ctx = context === 'context' ? {} : null;
var fn = makeTest(count, rest);
const args = new Array(count);
@@ -37,25 +36,25 @@ function main({ millions, context, count, rest, method }) {
// Empty string falls through to next line as default, mostly for tests.
case 'apply':
bench.start();
- for (i = 0; i < n; i++)
+ for (i = 0; i < millions * 1e6; i++)
fn.apply(ctx, args);
- bench.end(n / 1e6);
+ bench.end(millions);
break;
case 'spread':
if (ctx !== null)
fn = fn.bind(ctx);
bench.start();
- for (i = 0; i < n; i++)
+ for (i = 0; i < millions * 1e6; i++)
fn(...args);
- bench.end(n / 1e6);
+ bench.end(millions);
break;
case 'call-spread':
bench.start();
- for (i = 0; i < n; i++)
+ for (i = 0; i < millions * 1e6; i++)
fn.call(ctx, ...args);
- bench.end(n / 1e6);
+ bench.end(millions);
break;
default:
- throw new Error('Unexpected method');
+ throw new Error(`Unexpected method "${method}"`);
}
}
diff --git a/benchmark/es/string-concatenations.js b/benchmark/es/string-concatenations.js
index a40b7fa8c3..72fb7f9969 100644
--- a/benchmark/es/string-concatenations.js
+++ b/benchmark/es/string-concatenations.js
@@ -16,7 +16,6 @@ const configs = {
const bench = common.createBenchmark(main, configs);
-
function main({ n, mode }) {
const str = 'abc';
const num = 123;
@@ -63,7 +62,7 @@ function main({ n, mode }) {
bench.end(n);
break;
default:
- throw new Error('Unexpected method');
+ throw new Error(`Unexpected method "${mode}"`);
}
return string;
diff --git a/benchmark/es/string-repeat.js b/benchmark/es/string-repeat.js
index e5bdbb5cc1..9e33e4acf4 100644
--- a/benchmark/es/string-repeat.js
+++ b/benchmark/es/string-repeat.js
@@ -33,7 +33,7 @@ function main({ n, size, encoding, mode }) {
bench.end(n);
break;
default:
- throw new Error('Unexpected method');
+ throw new Error(`Unexpected method "${mode}"`);
}
assert.strictEqual([...str].length, size);