join versus string concatination (v10)

Revision 10 of this benchmark created on


Preparation HTML

<script>
  var testStrings = ["Lorem", "ipsum", "dolor", "sit", "amet,", "consectetur", "adipiscing", "elit", "Proin", "adipiscing", "rutrum", "erat", "at", "vulputate", "Pellentesque", "ac", "mattis", "odio", "Fusce", "fermentum", "velit", "in", "turpis", "dictum", "quis", "suscipit", "nunc", "facilisis", "Nunc", "sollicitudin", "nisi", "eu", "est", "consequat", "ultrices", "quis", "eu", "libero", "Cras", "rutrum", "felis", "sed", "odio", "facilisis", "ut", "sollicitudin", "purus", "interdum", "Mauris", "in", "nunc", "ac", "quam", "consequat", "bibendum", "sit", "amet", "nec", "mi", "Integer", "pellentesque", "nulla", "ac", "leo", "semper", "vitae", "consectetur", "magna", "aliquet", "Praesent", "sed", "urna", "ante", "Mauris", "venenatis", "accumsan", "blandit", "Praesent", "vehicula", "feugiat", "volutpat", "Donec", "at", "lacus", "quam", "Morbi", "quis", "arcu", "sit", "amet", "ipsum", "elementum", "malesuada", "sit", "amet", "vitae", "diam", "Sed", "a", "egestas", "enim", "Integer", "consectetur", "sapien", "in", "nisl", "egestas", "sodalesUt", "placerat,", "felis", "et", "tempus", "tincidunt,", "enim", "diam", "adipiscing", "nunc,", "at", "laoreet", "ante", "arcu", "sit", "amet", "libero", "Curabitur", "et", "dolor", "sem,", "et", "congue", "massa", "Aliquam", "a", "molestie", "justo", "Aenean", "iaculis", "posuere", "nisl", "sed", "pellentesque", "Cras", "massa", "eros,", "vestibulum", "a", "feugiat", "a,", "varius", "vitae", "nibh", "Maecenas", "enim", "lacus,", "pretium", "sed", "eleifend", "et,", "adipiscing", "molestie", "ipsum", "Ut", "non", "dui", "quam,", "vel", "bibendum", "metus", "Cras", "tristique", "ipsum", "nec", "mi", "tempus", "sit", "amet", "volutpat", "tellus", "aliquam", "Vestibulum", "felis", "ante,", "venenatis", "quis", "lacinia", "et,", "faucibus", "ut", "eros", "Etiam", "ipsum", "purus,", "interdum", "sit", "amet", "pellentesque", "et,", "viverra", "vel", "lectus", "Sed", "sed", "pulvinar", "dui", "Nunc", "porta", "dictum", "bibendum", "Aliquam", "imperdiet", "aliquet", "purus", "nec", "mollis", "Nullam", "cursus", "elementum", "augue", "vitae", "pretium", "Duis", "pretium", "consectetur", "risus", "ut", "scelerisque", "Curabitur", "sed", "orci", "in", "erat", "facilisis", "cursus", "Nullam", "libero", "nulla,", "hendrerit", "sed", "venenatis", "quis,", "rutrum", "non", "dui", "Curabitur", "ut", "ante", "nisi", "Quisque", "congue", "viverra", "libero,", "nec", "accumsan", "libero", "gravida", "necDonec", "sit", "amet", "leo", "tellus,", "ut", "tincidunt", "elit", "Vivamus", "viverra", "ante", "non", "est", "egestas", "et", "blandit", "odio", "viverra", "Lorem", "ipsum", "dolor", "sit", "amet,", "consectetur", "adipiscing", "elit", "Phasellus", "lobortis,", "lacus", "sit", "amet", "pellentesque", "interdum,", "ligula", "massa", "porttitor", "ligula,", "nec", "blandit", "dolor", "libero", "vel", "neque", "Integer", "dignissim", "auctor", "libero,", "in", "fringilla", "dolor", "dapibus", "malesuada", "Mauris", "tincidunt", "purus", "ut", "est", "bibendum", "venenatis", "Nunc", "eu", "risus", "at", "enim", "interdum", "eleifend", "sit", "amet", "interdum", "orci", "In", "non", "dui", "nunc,", "quis", "dapibus", "risus", "Nulla", "ac", "nibh", "quam", "Maecenas", "nisl", "tortor,", "interdum", "id", "interdum", "vel,", "iaculis", "eu", "magna", "Nullam", "est", "sem,", "volutpat", "sit", "amet", "pretium", "sed,", "tempor", "quis", "anteVestibulum", "in", "erat", "ac", "augue", "ultricies", "scelerisque", "ac", "sit", "amet", "dolor", "Etiam", "dignissim,", "dui", "eget", "tristique", "pulvinar,", "eros", "purus", "pellentesque", "metus,", "a", "placerat", "quam", "ligula", "eget", "orci", "Fusce", "nibh", "nisi,", "cursus", "non", "condimentum", "vitae,", "volutpat", "ut", "justo", "Fusce", "fringilla", "purus", "sed", "ipsum", "condimentum", "congue", "Praesent", "ut", "risus", "odio", "Lorem", "ipsum", "dolor", "sit", "amet,", "consectetur", "adipiscing", "elit", "Phasellus", "ultrices", "orci", "ac", "eros", "ullamcorper", "rutrum", "Aenean", "ultrices", "mollis", "enim", "in", "pulvinar", "Aenean", "massa", "enim,", "ullamcorper", "id", "hendrerit", "vel,", "placerat", "vitae", "odio", "Donec", "non", "dui", "erat", "Curabitur", "vehicula", "turpis", "eu", "nulla", "vulputate", "at", "rutrum", "mauris", "ornare", "In", "blandit", "ante", "ut", "dui", "lacinia", "tincidunt", "Donec", "tempus,", "mi", "ac", "condimentum", "faucibus,", "eros", "quam", "gravida", "orci,", "vel", "scelerisque", "nisl", "leo", "eu", "nisl", "Vestibulum", "nunc", "arcu,", "porttitor", "ut", "ultrices", "non,", "consectetur", "non", "ligula", "Aliquam", "erat", "volutpat", "Vestibulum", "sit", "amet", "odio", "lacinia", "dolor", "pulvinar", "congue", "non", "eu", "leo", "Proin", "faucibus", "ultrices", "malesuada", "Vivamus", "id", "quam", "est", "Cras", "rutrum", "lacus", "commodo", "neque", "lacinia", "feugiat", "eget", "sed", "velitSuspendisse", "id", "turpis", "ligula,", "in", "sollicitudin", "felis", "Proin", "porttitor", "vestibulum", "facilisis", "Nam", "at", "lorem", "a", "neque", "cursus", "convallis", "quis", "ac", "neque", "Mauris", "auctor", "fermentum", "quam,", "elementum", "tempor", "dolor", "tristique", "id", "Mauris", "mauris", "enim,", "faucibus", "eu", "tincidunt", "id,", "pulvinar", "et", "felis", "Phasellus", "blandit", "velit", "non", "tellus", "commodo", "quis", "sollicitudin", "est", "vehicula", "Suspendisse", "sed", "velit", "ante,", "ullamcorper", "venenatis", "leo", "Duis", "ac", "magna", "non", "sem", "vestibulum", "ornare", "Donec", "massa", "quam,", "sodales", "eget", "suscipit", "nec,", "egestas", "dapibus", "felis", "Proin", "sed", "eros", "vel", "est", "facilisis", "imperdiet", "in", "dictum", "velit", "Ut", "malesuada", "tempor", "nulla", "vitae", "dictum", "Aliquam", "mauris", "mi,", "dignissim", "id", "commodo", "ut,", "adipiscing", "quis", "libero", "Mauris", "a", "quam", "nisi", "Nam", "tincidunt", "lorem", "ac", "dolor", "egestas", "posuere"];
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
Join array with push
var result = [];

for (var i = 0, len = testStrings.length; i < len; i++) {
 result.push(testStrings[i]);
}

/a/.exec(result.join(""))
ready
Concatenate
var result = "";

for (var i = 0, len = testStrings.length; i < len; i++) {
 result += testStrings[i];
}

/a/.exec(result)
ready
Join array without push
var result = [];

for (var i = 0, len = testStrings.length; i < len; i++) {
 result[i] = testStrings[i];
}

/a/.exec(result.join(""));
ready
Join existing array
var result = testStrings.join('');
/a/.exec(result)
ready
String#concat
var result = "".concat.apply("", testStrings);
/a/.exec(result);
ready
String#concat via prototype
var result = String.prototype.concat.apply("", testStrings);
/a/.exec(result);
ready

Revisions

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