From 7458fbb0c7187f103d04388df2403d1ad2d72d03 Mon Sep 17 00:00:00 2001 From: "Fangdun Cai (Fundon)" Date: Wed, 21 Sep 2016 11:47:26 +0800 Subject: [PATCH] benchmark: add benchmark for destructuring object PR-URL: https://github.com/nodejs/node/pull/8680 Reviewed-By: Brian White Reviewed-By: James M Snell Reviewed-By: Ilkka Myller --- benchmark/es/destructuring-object-bench.js | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 benchmark/es/destructuring-object-bench.js diff --git a/benchmark/es/destructuring-object-bench.js b/benchmark/es/destructuring-object-bench.js new file mode 100644 index 0000000000..a3277aa6bf --- /dev/null +++ b/benchmark/es/destructuring-object-bench.js @@ -0,0 +1,49 @@ +'use strict'; + +const common = require('../common.js'); + +const bench = common.createBenchmark(main, { + method: ['normal', 'destructureObject'], + millions: [100] +}); + +function runNormal(n) { + var i = 0; + var o = { x: 0, y: 1 }; + bench.start(); + for (; i < n; i++) { + /* eslint-disable no-unused-vars */ + var x = o.x; + var y = o.y; + var r = o.r || 2; + /* eslint-enable no-unused-vars */ + } + bench.end(n / 1e6); +} + +function runDestructured(n) { + var i = 0; + var o = { x: 0, y: 1 }; + bench.start(); + for (; i < n; i++) { + /* eslint-disable no-unused-vars */ + var { x, y, r = 2 } = o; + /* eslint-enable no-unused-vars */ + } + bench.end(n / 1e6); +} + +function main(conf) { + const n = +conf.millions * 1e6; + + switch (conf.method) { + case 'normal': + runNormal(n); + break; + case 'destructureObject': + runDestructured(n); + break; + default: + throw new Error('Unexpected method'); + } +}