regex loop-for vs loop-while

JavaScript performance comparison

Revision 2 of this test case created

Preparation code

 
<script>
Benchmark.prototype.setup = function() {
    var specialChars = [{
      val: "a",
      let: "áàãâä"
    }, {
      val: "e",
      let: "éèêë"
    }, {
      val: "i",
      let: "íìîï"
    }, {
      val: "o",
      let: "óòõôö"
    }, {
      val: "u",
      let: "úùûü"
    }, {
      val: "c",
      let: "ç"
    }, {
      val: "A",
      let: "ÁÀÃÂÄ"
    }, {
      val: "E",
      let: "ÉÈÊË"
    }, {
      val: "I",
      let: "ÍÌÎÏ"
    }, {
      val: "O",
      let: "ÓÒÕÔÖ"
    }, {
      val: "U",
      let: "ÚÙÛÜ"
    }, {
      val: "C",
      let: "Ç"
    }, {
      val: "",
      let: "^a-zA-Z0-9"
    }];
    var str = "SDA&S¨*D&¨%S&DAHSDsdlpfisd09f8-adf[sf]df~]]ç~ç´p8077";
};
</script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
for
str = str.toLowerCase();

var regex;
for (var i = 0; i < specialChars.length; i++) {
  regex = new RegExp("[" + specialChars[i].let + "]", "g");
  str = str.replace(regex, specialChars[i].val);
  regex = null;
}
pending…
while
str = str.toLowerCase();

var regex, i = specialChars.length;
while (i--) {
  regex = new RegExp("[" + specialChars[i].let + "]", "g");
  str = str.replace(regex, specialChars[i].val);
  regex = null;
}
pending…
while #2
str = str.toLowerCase();

var regex;
while (i = specialChars.shift()) {
  regex = new RegExp("[" + i.let + "]", "g");
  str = str.replace(regex, i.val);
  regex = null;
}
pending…

Compare results of other browsers

Revisions

You can edit these tests or add even more tests to this page by appending /edit to the URL. Here’s a list of current revisions for this page:

0 comments

Add a comment