String replace methods

JavaScript performance comparison

Test case created by 1x0

Info

Different methods to replace all occurs in a string

Preparation code

 
<script>
Benchmark.prototype.setup = function() {
    var str = (new Array(1000)).join("test 1 2 3 4 5 6   7 8  9 bar !"),
       search = "7 8",
       regexp = new RegExp(search, "g"),
       replace = "+";
   
    function replace_while(str, search, replace) {
       while ( str.indexOf(search) > -1 ) {
          str = str.replace(search, replace);
       }
       return str;
    }
   
    function replace_substring(str, search, replace) {
       var result = "",
          index = -1,
          len = search.length;
     
       while ( (index = str.indexOf(search)) > -1 ) {
         result += str.substring(0, index) + replace;
         str = str.substring(index + len);
       }
   
       return result;
    }
   
    function replace_splitjoin(str, search, replace) {
       return str.split(search).join(replace);
    }
   
    function replace_long(oldS,newS,fullS) {
       var fullS = fullS != null ? fullS.toString() : '',
          i = 0;
   
       while (i < fullS.length) {
          if (fullS.substring && fullS.substring(i,i+oldS.length) == oldS) {
             fullS = fullS.substring(0,i)+newS+fullS.substring(i+oldS.length,fullS.length);
             i += newS.length;
          } else {
             i++;
          }
       }
       return fullS;
    }
};
</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
regexp replace
str.replace(regexp, replace);
pending…
replace_while
replace_while(str, search, replace);
pending…
replace_substring
replace_substring(str, search, replace);
pending…
replace_splitjoin
replace_splitjoin(str, search, replace);
pending…
replace_long
replace_long(str, search, replace);
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