replaceAll Test

JavaScript performance comparison

Revision 9 of this test case created

Info

Forcibly de-tuned the benchmark to make Chrome spit out a marginally representative result.

Preparation code

<script>
  var medium = new Array(100).join(" ' "),
      large = new Array(1000).join(" ' "),
      xtralg = new Array(10000).join(" ' ");
 
  function createSmall() {
   return " ' ' ' " + Math.random();
  }
 
  function createMedium() {
   return medium + Math.random();
  }
 
  function createLarge() {
   return large + Math.random();
  }
 
  function createXtralg() {
   return xtralg + Math.random();
  }
</script>
<script>
Benchmark.prototype.setup = function() {
    /**
     * ReplaceAll by Fagner Brack (MIT Licensed)
     * Replaces all occurrences of a substring in a string
     */

    String.prototype.replaceAll = function( token, newToken, ignoreCase ) {
        var _token;
        var str = this + "";
        var i = -1;
   
        if ( typeof token === "string" ) {
   
            if ( ignoreCase ) {
   
                _token = token;
   
                while( (
                    i = str.indexOf(
                        token, i >= 0 ? i + newToken.length : 0
                    ) ) !== -1
                ) {
                    str = str.substring( 0, i ) +
                        newToken +
                        str.substring( i + token.length );
                }
   
            } else {
                return this.split( token ).join( newToken );
            }
   
        }
    return str;
    };
};
</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
replaceAll small
window.test_str = createSmall().replaceAll("'", "\\'");
pending…
replace small
window.test_str = createSmall().replace(/'/g, "\\'");
pending…
replaceAll medium
window.test_str = createMedium().replaceAll("'", "\\'");
pending…
replace medium
window.test_str = createMedium().replace(/'/g, "\\'");
pending…
replaceAll large
window.test_str = createLarge().replaceAll("'", "\\'");
pending…
replace large
window.test_str = createLarge().replace(/'/g, "\\'");
pending…
replaceAll xtralg
window.test_str = createXtralg().replaceAll("'", "\\'");
pending…
replace xtralg
window.test_str = createXtralg().replace(/'/g, "\\'");
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