getElementsByClassName vs jQuery $ selector vs querySelectorAll

JavaScript performance comparison

Revision 9 of this test case created by

Preparation code

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<div id="playtime">
  <ul>
    <li><a href="#" name="name" class="classname">item 1</a></li>
    <li><a href="#" name="name" class="classname">item 2</a></li>
    <li><a href="#" name="name" class="classname">item 3</a></li>
    <li><a href="#" name="name" class="classname">item 4</a></li>
    <li><a href="#" name="name" class="classname">item 5</a></li>
    <li><a href="#" name="name" class="classname">item 6</a></li>
    <li><a href="#" name="name" class="classname">item 7</a></li>
    <li><a href="#" name="name" class="classname">item 8</a></li>
    <li><a href="#" name="name" class="classname">item 9</a></li>
    <li><a href="#" name="name" class="classname">item 10</a></li>
  </ul>
</div>
<script>
  var nodesDad, nodes, len, i;
</script>
    

Preparation code output

<div id="playtime"> <ul> <li><a href="#" name="name" class="classname">item 1</a></li> <li><a href="#" name="name" class="classname">item 2</a></li> <li><a href="#" name="name" class="classname">item 3</a></li> <li><a href="#" name="name" class="classname">item 4</a></li> <li><a href="#" name="name" class="classname">item 5</a></li> <li><a href="#" name="name" class="classname">item 6</a></li> <li><a href="#" name="name" class="classname">item 7</a></li> <li><a href="#" name="name" class="classname">item 8</a></li> <li><a href="#" name="name" class="classname">item 9</a></li> <li><a href="#" name="name" class="classname">item 10</a></li> </ul> </div> <script> var nodesDad, nodes, len, i; </script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
getElementById / getElementsByClassName
nodes = document.getElementById('playtime').getElementsByClassName('classname');
for(i = 0; i < nodes.length; i++) nodes[i];
pending…
querySelectorAll
nodes = document.querySelectorAll('#playtime .classname');
for(i = 0; i < nodes.length; i++) nodes[i];
pending…
jQuery $ Selector
nodes = $('#playtime .classname');
for(i = 0; i < nodes.length; i++) nodes[i];
pending…
jQuery $ Selector w/ find
nodes = $('#playtime').find('.classname');
for(i = 0; i < nodes.length; i++) nodes[i];
pending…
document.getElementById / querySelectorAll
nodes = document.getElementById('playtime').querySelectorAll('.classname');
for(i = 0; i < nodes.length; i++) nodes[i];
pending…

Compare results of other browsers

Revisions

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

0 Comments