array join vs string connect

JavaScript performance comparison

Revision 38 of this test case created by zxcabs

Preparation code

<script>
 
  var myarray = [],
      len = 400;

  while (len--) {
     myarray.push(Math.random().toString(33));
  }

</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
array join
var tmp = [];
for (i = 0; i < myarray.length; i++) {
  tmp.push(myarray[i]);
}

var output = tmp.join('');
pending…
string connect
var output = '';
for (i = 0; i < myarray.length; i++) {
  output += myarray[i];
}
pending…
string-multi concat
var output = '';
for (i = 0; i < myarray.length; i += 4) {
  output += myarray[i] + myarray[i + 1] + myarray[i + 2] + myarray[i + 3];
}
pending…
string-multi concat 2
var output = '';
for (i = 0; i < myarray.length; i += 4) {
  output += myarray[i];
  output += myarray[i + 1];
  output += myarray[i + 2];
  output += myarray[i + 3];
}
pending…
string-multi concat 3
var output = '';
var l = myarray.length;
for (i = 0; i < l; i += 10) {
  output += myarray[i];
  output += myarray[i + 1];
  output += myarray[i + 2];
  output += myarray[i + 3];
  output += myarray[i + 4];
  output += myarray[i + 5];
  output += myarray[i + 6];
  output += myarray[i + 7];
  output += myarray[i + 8];
  output += myarray[i + 9];
}
pending…
array join nocopy
var output = myarray.join('');
pending…
array preallocate
var tmp = new Array(myarray.length);
for (var i = 0, l = myarray.length; i < l; i++) {
  tmp[i] = myarray[i];
}
var output = tmp.join('');
pending…
string concat
var output = '';
for (var i = myarray.length, l = 0; l < i; l++) {
  output += myarray[l];
}
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