Ultimate string concatenation tests (v8)

Revision 8 of this benchmark created on


Test runner

Ready to run.

Testing in
TestOps/sec
Push and join
var array = [];
for (var i = 0; i < 100; i++) {
 array.push("foo");
}

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

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

var str = String.prototype.concat.apply("", array)
ready
Hotspot Test (based on http://my.opera.com/emoller/blog/2011/05/01/javascript-performance)
var dest = 'apple';
while (dest.length < 100000) {
 var offs = dest.length - 5;
 for (var i = offs; i < offs + 10; ++i)
 dest += dest[i % 5];
}
ready
@rem's Hotspot (http://jsbin.com/aruze3/edit)
var dest = 'apple'.split(''); // turn it in to an array
while (dest.length < 100000) {
 var offs = dest.length - 5;
 for (var i = offs; i < offs + 10; ++i)
 dest.push(dest[i % 5]); // push on to the array, instead of concat
 // dest += dest[i];
}
var str = dest.join("");
ready
w/o concat of substring of self
var dest = 'apple';
var other = 'apple';
while (dest.length < 100000) {
 var offs = dest.length - 5;
 for (var i = offs; i < offs + 10; ++i)
 dest += other[i % 5];
}
ready
@rem's w/o concat of substring of self
var dest = 'apple'.split(''); // turn it in to an array
var other = 'apple';
while (dest.length < 100000) {
 var offs = dest.length - 5;
 for (var i = offs; i < offs + 10; ++i)
 dest.push(other[i % 5]); // push on to the array, instead of concat
 // dest += dest[i];
}
var str = dest.join("");
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.