NodeList To Array (v3)

Revision 3 of this benchmark created by Eli Snow on


Description

http://stackoverflow.com/questions/3199588/fastest-way-to-convert-javascript-nodelist-to-array

Preparation HTML

<div style="display:none">
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<script>
  var nl = document.getElementsByTagName('*');
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
Array.prototype.slice.call
var arr = Array.prototype.slice.call(nl);
ready
push
var arr = [];
for (var i = 0, n; n = nl[i]; ++i) arr.push(n);
ready
single for
for (var i = 0, ref = nl.length, arr = []; i < ref; arr[i] = nl[i++]);
ready
count back
var arr = [];
for (var i = nl.length; i--; arr.unshift(nl[i]));
ready
set length first
for (var i = 0, arr = [], ref = arr.length = nl.length; i < ref; arr[i] = nl[i++]);
ready
unshift
var arr = [];
for (var i = arr.length = nl.length; i--; arr.unshift(nl[i]));
ready
unshift2
var arr = new Array(nl.length);
for (var i = nl.length; i--; arr.unshift(nl[i]));
ready
[].slice.call
var arr = [].slice.call(nl);
ready
reverse while
var l = nl.length,
    arr = [];
while (l--) {
 arr[l] = nl[l];
}
ready

Revisions

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