From af49e58211ea63d53900eb068eaa5f32ae1cf236 Mon Sep 17 00:00:00 2001 From: Ethan Arrowood Date: Fri, 6 Oct 2017 09:59:28 -0700 Subject: [PATCH] test: add benchmark tests for es Added parallel test benchmark for es PR-URL: https://github.com/nodejs/node/pull/16076 Reviewed-By: Rich Trott Reviewed-By: James M Snell --- benchmark/es/defaultparams-bench.js | 2 ++ benchmark/es/destructuring-bench.js | 2 ++ benchmark/es/destructuring-object-bench.js | 2 ++ benchmark/es/foreach-bench.js | 2 ++ benchmark/es/map-bench.js | 2 ++ benchmark/es/restparams-bench.js | 2 ++ benchmark/es/spread-bench.js | 2 ++ benchmark/es/string-concatenations.js | 7 ++++-- benchmark/es/string-repeat.js | 27 ++++++++++++++-------- test/parallel/test-benchmark-es.js | 18 +++++++++++++++ 10 files changed, 54 insertions(+), 12 deletions(-) create mode 100644 test/parallel/test-benchmark-es.js diff --git a/benchmark/es/defaultparams-bench.js b/benchmark/es/defaultparams-bench.js index 56d04cd95bb454..1393abbe54395c 100644 --- a/benchmark/es/defaultparams-bench.js +++ b/benchmark/es/defaultparams-bench.js @@ -42,6 +42,8 @@ function main(conf) { const n = +conf.millions * 1e6; switch (conf.method) { + case '': + // Empty string falls through to next line as default, mostly for tests. case 'withoutdefaults': runOldStyleDefaults(n); break; diff --git a/benchmark/es/destructuring-bench.js b/benchmark/es/destructuring-bench.js index 3288e009a08515..a6c9a81ae02895 100644 --- a/benchmark/es/destructuring-bench.js +++ b/benchmark/es/destructuring-bench.js @@ -38,6 +38,8 @@ function main(conf) { const n = +conf.millions * 1e6; switch (conf.method) { + case '': + // Empty string falls through to next line as default, mostly for tests. case 'swap': runSwapManual(n); break; diff --git a/benchmark/es/destructuring-object-bench.js b/benchmark/es/destructuring-object-bench.js index 3edfa6d60bad92..63e085a2424430 100644 --- a/benchmark/es/destructuring-object-bench.js +++ b/benchmark/es/destructuring-object-bench.js @@ -37,6 +37,8 @@ function main(conf) { const n = +conf.millions * 1e6; switch (conf.method) { + case '': + // Empty string falls through to next line as default, mostly for tests. case 'normal': runNormal(n); break; diff --git a/benchmark/es/foreach-bench.js b/benchmark/es/foreach-bench.js index 26c741b7066604..62aa02236fc7ae 100644 --- a/benchmark/es/foreach-bench.js +++ b/benchmark/es/foreach-bench.js @@ -63,6 +63,8 @@ function main(conf) { items[i] = i; switch (conf.method) { + case '': + // Empty string falls through to next line as default, mostly for tests. case 'for': fn = useFor; break; diff --git a/benchmark/es/map-bench.js b/benchmark/es/map-bench.js index 62ff332fd44149..035ed1a22aaf91 100644 --- a/benchmark/es/map-bench.js +++ b/benchmark/es/map-bench.js @@ -112,6 +112,8 @@ function main(conf) { const n = +conf.millions * 1e6; switch (conf.method) { + case '': + // Empty string falls through to next line as default, mostly for tests. case 'object': runObject(n); break; diff --git a/benchmark/es/restparams-bench.js b/benchmark/es/restparams-bench.js index d893af48f4df5f..32fa985dedb806 100644 --- a/benchmark/es/restparams-bench.js +++ b/benchmark/es/restparams-bench.js @@ -64,6 +64,8 @@ function main(conf) { const n = +conf.millions * 1e6; switch (conf.method) { + case '': + // Empty string falls through to next line as default, mostly for tests. case 'copy': runCopyArguments(n); break; diff --git a/benchmark/es/spread-bench.js b/benchmark/es/spread-bench.js index a9416ad90ef4b3..b6dfb5963e7acc 100644 --- a/benchmark/es/spread-bench.js +++ b/benchmark/es/spread-bench.js @@ -33,6 +33,8 @@ function main(conf) { args[i] = i; switch (conf.method) { + case '': + // Empty string falls through to next line as default, mostly for tests. case 'apply': bench.start(); for (i = 0; i < n; i++) diff --git a/benchmark/es/string-concatenations.js b/benchmark/es/string-concatenations.js index 8bdaefa4da7560..b7f5c319361c6c 100644 --- a/benchmark/es/string-concatenations.js +++ b/benchmark/es/string-concatenations.js @@ -19,14 +19,15 @@ const bench = common.createBenchmark(main, configs); function main(conf) { const n = +conf.n; - const mode = conf.mode; const str = 'abc'; const num = 123; let string; - switch (mode) { + switch (conf.mode) { + case '': + // Empty string falls through to next line as default, mostly for tests. case 'multi-concat': bench.start(); for (let i = 0; i < n; i++) @@ -63,6 +64,8 @@ function main(conf) { string = `${num}`; bench.end(n); break; + default: + throw new Error('Unexpected method'); } return string; diff --git a/benchmark/es/string-repeat.js b/benchmark/es/string-repeat.js index a6b389033ac579..1ddc7db78c7f86 100644 --- a/benchmark/es/string-repeat.js +++ b/benchmark/es/string-repeat.js @@ -19,16 +19,23 @@ function main(conf) { let str; - if (conf.mode === 'Array') { - bench.start(); - for (let i = 0; i < n; i++) - str = new Array(size + 1).join(character); - bench.end(n); - } else { - bench.start(); - for (let i = 0; i < n; i++) - str = character.repeat(size); - bench.end(n); + switch (conf.mode) { + case '': + // Empty string falls through to next line as default, mostly for tests. + case 'Array': + bench.start(); + for (let i = 0; i < n; i++) + str = new Array(size + 1).join(character); + bench.end(n); + break; + case 'repeat': + bench.start(); + for (let i = 0; i < n; i++) + str = character.repeat(size); + bench.end(n); + break; + default: + throw new Error('Unexpected method'); } assert.strictEqual([...str].length, size); diff --git a/test/parallel/test-benchmark-es.js b/test/parallel/test-benchmark-es.js new file mode 100644 index 00000000000000..569edfc293c29c --- /dev/null +++ b/test/parallel/test-benchmark-es.js @@ -0,0 +1,18 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('es', + [ + 'method=', + 'millions=0.000001', + 'count=1', + 'context=null', + 'rest=0', + 'mode=', + 'n=1', + 'encoding=ascii', + 'size=1e1' + ]);