jquery v poj nodelist iteration

Benchmark created by Paul Grenier on


Preparation HTML

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<div>
  <ul>
    <li><a href="#">item 0</a></li>
    <li><a href="#">item 1</a></li>
    <li><a href="#">item 2</a></li>
    <li><a href="#">item 3</a></li>
    <li><a href="#">item 4</a></li>
    <li><a href="#">item 5</a></li>
    <li><a href="#">item 6</a></li>
    <li><a href="#">item 7</a></li>
    <li><a href="#">item 8</a></li>
    <li><a href="#">item 9</a></li>
  </ul>
</div>
<script>
  var pojList = document.getElementsByTagName('a'),
      jQueryList = $('a'),
      customMakeArray = function(nodeList) {
    var i, len = nodeList.length,
        arr = [];
    for (i = 0; i < len; ++i) {
     arr[i] = nodeList[i];
    }
    return arr;
      },
      pojMakeArray = function(nodeList) {
    return Array.prototype.slice.apply(nodeList);
      };
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
jQuery1
jQueryList.each(function() {
 this.nodename;
});
ready
jQuery2
jQueryList.each(function(i, e) {
 e.nodename;
});
ready
poj1
var i, len = pojList.length;

for (i = 0; i < len; ++i) {
 pojList[i].nodename;
}
ready
poj2
var i, list = pojMakeArray(pojList),
    len = list.length;

for (i = 0; i < len; ++i) {
 list[i].nodename;
}
ready
poj3
var i, list = customMakeArray(pojList),
    len = list.length;

for (i = 0; i < len; ++i) {
 list[i].nodename;
}
ready
poj4
var i, curr;

for (i = -1; curr = pojList[++i];) {
 curr.nodename;
}
ready
poj5
var i, list = pojMakeArray(pojList),
    curr;

for (i = -1; curr = list[++i];) {
 curr.nodename;
}
ready
jQuery3
var i, list = jQueryList,
    curr;

for (i = -1; curr = list[++i];) {
 curr.nodename;
}
ready

Revisions

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

  • Revision 1: published by Paul Grenier on