Encode HTML entities (v8)

Revision 8 of this benchmark created on


Preparation HTML

<script>
  var text = 'asldjasdj lajdask jlasdj alsdj lasj dlkasjdlkajsdlkajs dlkajsdlkajs dlka jsldjs alsdj alksdjlajsif (a < b && c > d) {} // Héllö naõ alsdksdkla lslask dlasj la jdlskj dlsaj dlkasj lajdl askd jlasjd lkajsd lasjd lasjd kasdl asldj aljsdl ajsld jasldk jlsdj dlas jalskdj las dlsjd lajsd lasd lasjd lasjd lajsd lkasjd lajsd lks';
  var shortText = 'if (a < b && c > d) {} // Héllö naõ';
  
  function safe_tags_regex(str) {
    return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
  }
  
  function safe_tags_dom(str) {
    var div = document.createElement('div');
    div.appendChild(document.createTextNode(str));
    return div.innerHTML;
  }
  
  function safe_tags_dom2(str) {
    var div = document.createElement('div');
    div.innerText = str;
    return div.innerHTML;
  }
  
  var tagsToReplace = {
    '&': '&amp;',
    '<': '&lt;',
    '>': '&gt;'
  };
  
  function replaceTag(tag) {
    return tagsToReplace[tag] || tag;
  }
  
  function safe_tags_replace(str) {
    return str.replace(/[&<>]/g, replaceTag);
  }
  
  function safe_tags_replace_inlinevars(str) {
    return str.replace(/[&<>]/g, function(t) {
      return ({
        '&': '&amp;',
        '<': '&lt;',
        '>': '&gt;'
      })[t] || t
    });
  }
  
  var safe_tags_replace_cachevars = (function() {
    var r = /[&<>]/g,
        ts = { '&': '&amp;', '<': '&lt;', '>': '&gt;' },
        f = function(t) { return ts[t] || t };
    return function(str) { return str.replace(r, f) }
  })();
  
  function save_tags_jquerytmpl(text) {
    return (text + "").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;");
  }
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
Using Regular Expression
var test = safe_tags_regex(text);
ready
Using DOM textNode
var test = safe_tags_dom(text);
ready
Using replace
var test = safe_tags_replace(text);
ready
Using DOM innerText
var test = safe_tags_dom2(text);
ready
Using replace (inline vars)
var test = safe_tags_replace_inlinevars(text);
ready
Using replace (cached vars)
var test = safe_tags_replace_cachevars(text);
ready
jquerytmpl
var test = save_tags_jquerytmpl(text);
ready

Revisions

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