htmlEscape関数の速度比較

by ethertank

JavaScript

var htmlEscape1 = (function() {
    var map = {
        "<": "&lt;",
        ">": "&gt;",
        "&": "&amp;",
        "'": "&apos;",
        '"': "&quot;"
    };
    var replaceStr = function(s) {
        return map[s];
    };
    return function(str) {
        return str.replace(/<|>|&|'|"|\s/g, replaceStr);
    };
})();


var htmlEscape2 = (function(map) {
    var replaceStr = function(s) {
        return map[s];
    };
    return function(str) {
        return str.replace(/<|>|&|'|"|\s/g, replaceStr);
    };
})({
    "<": "&lt;",
    ">": "&gt;",
    "&": "&amp;",
    "'": "&apos;",
    '"': "&quot;"
});


var a = new Date();
for(var i = 0; i < 50000; i++) { htmlEscape1("<>&'\" "); }
console.log("1: ", ("<>&'\" "), new Date() - a);


var b = new Date();
for(var i = 0; i < 50000; i++) { htmlEscape2("<>&'\" "); }
console.log("2: ", ("<>&'\""), new Date() - b);