summaryrefslogtreecommitdiff
path: root/benchmark/es/defaultparams-bench.js
diff options
context:
space:
mode:
authorJames M Snell <jasnell@gmail.com>2016-04-15 09:25:58 -0700
committerJames M Snell <jasnell@gmail.com>2016-04-20 14:57:51 -0700
commit7dc1a87a7b2ac8be34aa1e74643766cdc90c82d4 (patch)
tree8925c3f3a7eab15dea89290f92bda4b709f8f38d /benchmark/es/defaultparams-bench.js
parentcb9eff2f93731b03a7d7138eee3919243a0cfd69 (diff)
downloadandroid-node-v8-7dc1a87a7b2ac8be34aa1e74643766cdc90c82d4.tar.gz
android-node-v8-7dc1a87a7b2ac8be34aa1e74643766cdc90c82d4.tar.bz2
android-node-v8-7dc1a87a7b2ac8be34aa1e74643766cdc90c82d4.zip
benchmarks: add microbenchmarks for new ES6 features
Adds new microbenchmarks for destructuring, rest params and default params. PR-URL: https://github.com/nodejs/node/pull/6222 Reviewed-By: Brian White <mscdex@mscdex.net>
Diffstat (limited to 'benchmark/es/defaultparams-bench.js')
-rw-r--r--benchmark/es/defaultparams-bench.js58
1 files changed, 58 insertions, 0 deletions
diff --git a/benchmark/es/defaultparams-bench.js b/benchmark/es/defaultparams-bench.js
new file mode 100644
index 0000000000..1b962cfb39
--- /dev/null
+++ b/benchmark/es/defaultparams-bench.js
@@ -0,0 +1,58 @@
+'use strict';
+
+const common = require('../common.js');
+const assert = require('assert');
+
+const bench = common.createBenchmark(main, {
+ method: ['withoutdefaults', 'withdefaults'],
+ millions: [100]
+});
+
+function oldStyleDefaults(x, y) {
+ x = x || 1;
+ y = y || 2;
+ assert.strictEqual(x, 1);
+ assert.strictEqual(y, 2);
+}
+
+function defaultParams(x = 1, y = 2) {
+ assert.strictEqual(x, 1);
+ assert.strictEqual(y, 2);
+}
+
+function runOldStyleDefaults(n) {
+
+ common.v8ForceOptimization(oldStyleDefaults);
+
+ var i = 0;
+ bench.start();
+ for (; i < n; i++)
+ oldStyleDefaults();
+ bench.end(n / 1e6);
+}
+
+function runDefaultParams(n) {
+
+ common.v8ForceOptimization(defaultParams);
+
+ var i = 0;
+ bench.start();
+ for (; i < n; i++)
+ defaultParams();
+ bench.end(n / 1e6);
+}
+
+function main(conf) {
+ const n = +conf.millions * 1e6;
+
+ switch (conf.method) {
+ case 'withoutdefaults':
+ runOldStyleDefaults(n);
+ break;
+ case 'withdefaults':
+ runDefaultParams(n);
+ break;
+ default:
+ throw new Error('Unexpected method');
+ }
+}