Ultimate string concatenation tests

JavaScript performance comparison

Revision 5 of this test case created by Rod Knowlton

Preparation code

<script src="https://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js"></script>
<script>
dojo.require("dojox.string.Builder");
</script>
    

Preparation code output

Test runner

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

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
Push and join
var array = [];
for (var i = 0; i < 100; i++) {
 array.push("foo");
}

var str = array.join("");
pending…
Length and join
var array = [];
for (var i = 0; i < 100; i++) {
 array[array.length] = "foo";
}

var str = array.join("");
pending…
String +=
var str = "";
for (var i = 0; i < 100; i++) {
 str += "foo";
}
pending…
Concat
var str = "";
for (var i = 0; i < 100; i++) {
 str = str.concat("foo");
}
pending…
Push and concact
var array = [];
for (var i = 0; i < 100; i++) {
 array.push("foo");
}

var str = String.prototype.concat.apply("", array)
pending…
dojox.string.Builder
var sb = new dojox.string.Builder();
for (var i = 0; i < 100; i++) {
 sb.append("foo");
}
sb.toString();
pending…
Direct assign & join
var array = [];
for (var i = 0; i < 100; i++) {
 array[i] = "foo";
}

var str = array.join("");
pending…
Hotspot Test (based on http://my.opera.com/emoller/blog/2011/05/01/javascript-performance)
var dest = 'foo';
while (dest.length < 300) {
 var offs = dest.length - 3;
 for (var i = offs; i < offs + 16; ++i)
 dest += dest[i];
}
pending…
@rem's Hotspot (http://jsbin.com/aruze3/edit)
var dest = 'foo'.split(''); // turn it in to an array
var start = new Date();
while (dest.length < 300) {
 var offs = dest.length - 3;
 for (var i = offs; i < offs + 16; ++i)
 dest.push(dest[i]); // push on to the array, instead of concat
 // dest += dest[i];
}
var str = dest.join("");
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.

0 Comments