benchmark: add benchmark for string concatenations
PR-URL: https://github.com/nodejs/node/pull/12455 Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
22aa3d4899
commit
3b1e837c27
69
benchmark/es/string-concatenations.js
Normal file
69
benchmark/es/string-concatenations.js
Normal file
@ -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;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user