html-entities-switch-map

Benchmark created by Dmitriy Kubyshkin on


Setup

function doReplaceSwitch(char) {
    switch(char) {
      case '&':
        return '&';
      case '<':
        return '&lt;';
      case '"':
        return '&#34;';
      case '\'':
        return '&#39;';
      default:
        return char;
    }
  }
  
  const replacementMap = {
    '&': '&amp;',
    '<': '&lt;',
    '"': '&#34;',
    '\'': '&#39;'
  };
  
  function doReplaceMap(char) {
    return replacementMap[char] || char;
  }
  
  function replaceSwitch(str) {
    return str.replace(/[&<"']/g, doReplaceSwitch);
  }
  
  function replaceMap(str) {
    return str.replace(/[&<"']/g, doReplaceMap);
  }
  
  function replaceIterateSwitch(str) {
    var result = '';
    for(var i = 0; i < str.length; ++i) {
      var char = str[i];
      result += doReplaceSwitch(char);
    }
    return result;
  }
  
  function replaceIterateMap(str) {
    var result = '';
    for(var i = 0; i < str.length; ++i) {
      var char = str[i];
      result += doReplaceMap(char);
    }
    return result;
  }
  
  function multiRegex(str) {
    return str
      .replace(/&/g, '&amp;')
      .replace(/</g, '&lt;')
      .replace(/"/g, '&#34;')
      .replace(/'/g, '&#37;')
  }
  
  function doReplaceCharCode(char) {
    return "&#" + char.charCodeAt(0) + ";";
  }
  
  function replaceRegexCharCode(str) {
    return str.replace(/[\x26\x0A\x3c\x3e\x22\x27]/g, doReplaceCharCode);
  }

Test runner

Ready to run.

Testing in
TestOps/sec
Regex CharCode
replaceRegexCharCode('<script>if (a && b) {}</script>');
ready
MultiRegex
multiRegex('<script>if (a && b) {}</script>');
ready
Iterate Map
replaceIterateMap('<script>if (a && b) {}</script>');
ready
Iterate Switch
replaceIterateSwitch('<script>if (a && b) {}</script>');
ready
Regex Switch
replaceSwitch('<script>if (a && b) {}</script>');
ready
Regex Map
replaceMap('<script>if (a && b) {}</script>');
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.

  • Revision 1: published by Dmitriy Kubyshkin on