querySelectorAll vs getElementsByTagName with iteration (v38)

Revision 38 of this benchmark created on


Description

Checking if nodeLists get internally cached, or if the dom tree must be traversed again on each iteration

Preparation HTML

<div>
  <ul>
    <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 1</a>
    </li>
    <li>
      <a href="#">item 2</a>
    </li>
    <li>
      <a href="#">item 3</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 1</a>
    </li>
    <li>
      <a href="#">item 2</a>
    </li>
    <li>
      <a href="#">item 3</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 1</a>
    </li>
    <li>
      <a href="#">item 2</a>
    </li>
    <li>
      <a href="#">item 3</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 1</a>
    </li>
    <li>
      <a href="#">item 2</a>
    </li>
    <li>
      <a href="#">item 3</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 1</a>
    </li>
    <li>
      <a href="#">item 2</a>
    </li>
    <li>
      <a href="#">item 3</a>
    </li>
  </ul>
</div>

Test runner

Ready to run.

Testing in
TestOps/sec
querySelectorAll
var nodes = document.querySelectorAll('a')
var l = nodes.length;
for (var j = 0; j < 100; j++) {
  for (var i = 0; i < l; i++) {
    var node = nodes[i];
  }
}
ready
getElementsByTagName
var nodes = document.getElementsByTagName('a')
var l = nodes.length;
for (var j = 0; j < 100; j++) {
  for (var i = 0; i < l; i++) {
    var node = nodes[i];
  }
}
ready

Revisions

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