Я сделал наивный тест на node.js v6.0.0 и получил почти такую же производительность. Поскольку тест настолько наивен, не верьте слишком большим числам. Но, похоже, компилятор JIT генерирует очень оптимизированный код в наши дни. Это позволяет мне выбирать предпочтительные шаблоны для конкатенации для моих приложений-узлов.
Для справки это код, который я использовал:
'use strict'
function strConcat(i) {
return 'abc' + i + 'def'
}
function strTemplate(i) {
return `abc${i}def`
}
function run(strategy) {
let before = new Date().getTime()
let len = 0
for ( let i = 0; i < 10000000; i+=1 ) {
len += strategy(i).length
}
console.log(len + ' - ' + ((new Date().getTime()) - before) + 'ms')
}
console.log('strConcat')
run(strConcat)
console.log('strTemplate')
run(strTemplate)
И выход был:
strConcat
128888890 - 1904ms
strTemplate
128888890 - 1979ms
Я использовал len
, чтобы убедиться, что оптимизатор не оптимизирует весь цикл. Во всяком случае, это еще очень простой тест. Может быть, кто-то может сделать более сложный.