From 3b1e837c270b4b540705b7c447db850e48cc2bf3 Mon Sep 17 00:00:00 2001 From: Vse Mozhet Byt Date: Mon, 17 Apr 2017 04:07:43 +0300 Subject: benchmark: add benchmark for string concatenations PR-URL: https://github.com/nodejs/node/pull/12455 Reviewed-By: Benjamin Gruenbaum Reviewed-By: James M Snell --- benchmark/es/string-concatenations.js | 69 +++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 benchmark/es/string-concatenations.js diff --git a/benchmark/es/string-concatenations.js b/benchmark/es/string-concatenations.js new file mode 100644 index 0000000000..8bdaefa4da --- /dev/null +++ b/benchmark/es/string-concatenations.js @@ -0,0 +1,69 @@ +'use strict'; + +const common = require('../common.js'); + +const configs = { + n: [1e3], + mode: [ + 'multi-concat', + 'multi-join', + 'multi-template', + 'to-string-string', + 'to-string-concat', + 'to-string-template', + ], +}; + +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) { + case 'multi-concat': + bench.start(); + for (let i = 0; i < n; i++) + string = '...' + str + ', ' + num + ', ' + str + ', ' + num + '.'; + bench.end(n); + break; + case 'multi-join': + bench.start(); + for (let i = 0; i < n; i++) + string = ['...', str, ', ', num, ', ', str, ', ', num, '.'].join(''); + bench.end(n); + break; + case 'multi-template': + bench.start(); + for (let i = 0; i < n; i++) + string = `...${str}, ${num}, ${str}, ${num}.`; + bench.end(n); + break; + case 'to-string-string': + bench.start(); + for (let i = 0; i < n; i++) + string = String(num); + bench.end(n); + break; + case 'to-string-concat': + bench.start(); + for (let i = 0; i < n; i++) + string = '' + num; + bench.end(n); + break; + case 'to-string-template': + bench.start(); + for (let i = 0; i < n; i++) + string = `${num}`; + bench.end(n); + break; + } + + return string; +} -- cgit v1.2.3