getElementById vs. getElementsByClassName vs. querySelector vs. jQuery vs xpath (v168)

Revision 168 of this benchmark created by Costas on


Description

Changes to rev 26 (rev 27 is worse):
- repositioning xpath
- remove foo + checks for it (search for selecting elem by id once is enough)
- remove getElementById("poo") in querySelector (Class) & jQuery Class Selector for a true comparison of the algorithms.
- jQuery Class Selector -> jQuery w. querySelector
- added real jQuery ClassSelector

Preparation HTML

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>
<p id="bar" class="my-bar">
  Bar
</p>
<div id="poo" class="my-poo">
  <div id="par" class="my-bar">
    <div id="paz" class="my-bar">
      <span id="baz" class="my-baz">
        Baz
      </span>
    </div>
  </div>
</div>

Setup

$("#baz");

Test runner

Ready to run.

Testing in
TestOps/sec
getElementById
var bar = document.getElementById("baz");
ready
querySelector (ID)
var bar = document.querySelector("#baz");
ready
jQuery ID Selector
var bar = $("#baz");
ready
xpath eval
var bar = document.evaluate("/div/div/div/div/div/div/div/div/ul/li/div/div/div/div/div/div/div/div/ul/li/a/div/div/div/div/div/div/span",document,null,9,null).singleNodeValue;

 
ready
getElementsByClassName
var baz = document.getElementsByClassName("presenceIndicator");
 
ready
querySelector (Class)
var baz = document.querySelector(".presenceIndicator");
 
ready
jQuery ClassSelector
var baz = $(".presenceIndicator");
 
ready
jQuery w. querySelector
var baz = $(document.querySelector(".presenceIndicator"));
ready
getElementsByName
document.getElementsByName("p");
ready
jQuery attribute selector
var baz = $("[class=presenceIndicator]");
 
ready
jQuery w. querySelector
var baz = $(document.querySelector("[class=presenceIndicator]"));
 
ready
querySelector (Attribute)
var baz = document.querySelector("[class=presenceIndicator]");
 
ready
nested jQuery
var baz = $("#poo #par");
ready
jQuery nested find
var baz = $("#poo").find("#par");
ready
nested querySelector
var baz = document.querySelector("#poo #par");
 
ready

Revisions

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