Script Preparation code:
x
 
window.input = 'This is an aexample of a templated literal supported in modern JavaScript: `test ${test}`.'
window.stringifyByConcatWithSwitch = str => {
  let res = '';
  for (let i = 0, l = str.length; i < l; ++i) {
    let chr = str.charAt(i);
    switch (chr) {
      case '\\': chr = '\\\\'; break
      case '`':  chr = '\\`';  break
      case '$':  chr = '\\$';  break
    }
    res += chr
  }
  return `\`${res}\``
}
window.stringifyByRegex = str => str.replace(/\\|`|\$(?={)/g, match => `\\${match}`)
window.stringifyByJoin = str => {
  let res = [];
  for (let i = 0, l = str.length; i < l; ++i) {
    let chr = str.charAt(i)
    switch (chr) {
      case '\\': chr = '\\\\'; break
      case '`':  chr = '\\`';  break
      case '$':  chr = '\\$';  break
    }
    res.push(chr)
  }
  return `\`${res.join()}\``
}
const escaped = {
  '\\': '\\\\',
  '`':  '\\`',
  '$':  '\\$'
}
window.stringifyByConcatWithObject = str => {
  let res = ''
  for (let i = 0, l = str.length; i < l; ++i) {
    let chr = str.charAt(i)
    res += escaped[chr] || chr
  }
  return `\`${res}\``
}
window.stringifyByConcatWithIf = str => {
  let res = '';
  for (let i = 0, l = str.length; i < l; ++i) {
    let chr = str.charAt(i)
    if (chr === '\\')     chr = '\\\\'
    else if (chr === '`') chr = '\\`'
    else if (chr === '$') chr = '\\$'
    res += chr
  }
  return `\`${res}\``
}
Tests:
  • concatenating with switch

     
    stringifyByConcatWithSwitch(input)
  • regex replacement

     
    stringifyByRegex(input)
  • array joining

     
    stringifyByJoin(input)
  • concatenating with object

     
    stringifyByConcatWithObject(input)
  • concatenating with if

     
    stringifyByConcatWithIf(input)
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    concatenating with switch
    regex replacement
    array joining
    concatenating with object
    concatenating with if

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 3 years ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15
Safari 14 on Mac OS X 10.15.6
View result in a separate tab
Test name Executions per second
concatenating with switch 699959.5 Ops/sec
regex replacement 1030719.0 Ops/sec
array joining 526777.3 Ops/sec
concatenating with object 199868.7 Ops/sec
concatenating with if 479213.2 Ops/sec