Skip to content

Commit 7d87edc

Browse files
vsemozhetbytevanlucas
authored andcommitted
benchmark: add benchmark for string concatenations
PR-URL: #12455 Reviewed-By: Benjamin Gruenbaum <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 08ba9d4 commit 7d87edc

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

benchmark/es/string-concatenations.js

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
'use strict';
2+
3+
const common = require('../common.js');
4+
5+
const configs = {
6+
n: [1e3],
7+
mode: [
8+
'multi-concat',
9+
'multi-join',
10+
'multi-template',
11+
'to-string-string',
12+
'to-string-concat',
13+
'to-string-template',
14+
],
15+
};
16+
17+
const bench = common.createBenchmark(main, configs);
18+
19+
20+
function main(conf) {
21+
const n = +conf.n;
22+
const mode = conf.mode;
23+
24+
const str = 'abc';
25+
const num = 123;
26+
27+
let string;
28+
29+
switch (mode) {
30+
case 'multi-concat':
31+
bench.start();
32+
for (let i = 0; i < n; i++)
33+
string = '...' + str + ', ' + num + ', ' + str + ', ' + num + '.';
34+
bench.end(n);
35+
break;
36+
case 'multi-join':
37+
bench.start();
38+
for (let i = 0; i < n; i++)
39+
string = ['...', str, ', ', num, ', ', str, ', ', num, '.'].join('');
40+
bench.end(n);
41+
break;
42+
case 'multi-template':
43+
bench.start();
44+
for (let i = 0; i < n; i++)
45+
string = `...${str}, ${num}, ${str}, ${num}.`;
46+
bench.end(n);
47+
break;
48+
case 'to-string-string':
49+
bench.start();
50+
for (let i = 0; i < n; i++)
51+
string = String(num);
52+
bench.end(n);
53+
break;
54+
case 'to-string-concat':
55+
bench.start();
56+
for (let i = 0; i < n; i++)
57+
string = '' + num;
58+
bench.end(n);
59+
break;
60+
case 'to-string-template':
61+
bench.start();
62+
for (let i = 0; i < n; i++)
63+
string = `${num}`;
64+
bench.end(n);
65+
break;
66+
}
67+
68+
return string;
69+
}

0 commit comments

Comments
 (0)