summaryrefslogtreecommitdiff
path: root/benchmark/es/destructuring-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/destructuring-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/destructuring-bench.js')
-rw-r--r--benchmark/es/destructuring-bench.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/benchmark/es/destructuring-bench.js b/benchmark/es/destructuring-bench.js
new file mode 100644
index 0000000000..0e9b5e93f3
--- /dev/null
+++ b/benchmark/es/destructuring-bench.js
@@ -0,0 +1,50 @@
+'use strict';
+
+const common = require('../common.js');
+const assert = require('assert');
+
+const bench = common.createBenchmark(main, {
+ method: ['swap', 'destructure'],
+ millions: [100]
+});
+
+function runSwapManual(n) {
+ var i = 0, x, y, r;
+ bench.start();
+ for (; i < n; i++) {
+ x = 1, y = 2;
+ r = x;
+ x = y;
+ y = r;
+ assert.strictEqual(x, 2);
+ assert.strictEqual(y, 1);
+ }
+ bench.end(n / 1e6);
+}
+
+function runSwapDestructured(n) {
+ var i = 0, x, y;
+ bench.start();
+ for (; i < n; i++) {
+ x = 1, y = 2;
+ [x, y] = [y, x];
+ assert.strictEqual(x, 2);
+ assert.strictEqual(y, 1);
+ }
+ bench.end(n / 1e6);
+}
+
+function main(conf) {
+ const n = +conf.millions * 1e6;
+
+ switch (conf.method) {
+ case 'swap':
+ runSwapManual(n);
+ break;
+ case 'destructure':
+ runSwapDestructured(n);
+ break;
+ default:
+ throw new Error('Unexpected method');
+ }
+}