summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--benchmark/es/string-concatenations.js69
1 files changed, 69 insertions, 0 deletions
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;
+}