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

Revision 144 of this benchmark created by Nicholas Cloud on


Description

Rev 144: - jQuery 2.x - selecting by attribute

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://code.jquery.com/jquery-2.1.3.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>
      <span data-buz="buz">
        Buz
      </span>
    </div>
  </div>
</div>

Test runner

Ready to run.

Testing in
TestOps/sec
getElementById
var bar = document.getElementById("bar");
ready
querySelector (ID)
var bar = document.querySelector("#bar");
ready
jQuery ID Selector
var bar = $("#bar");
ready
xpath eval
var bar = document.evaluate("//*[@id='bar']",document,null,9,null).singleNodeValue;
ready
getElementsByClassName
var baz = document.getElementsByClassName("my-baz");
 
ready
querySelector (Class)
var baz = document.querySelector(".my-baz");
 
ready
jQuery ClassSelector
var baz = $(".my-baz");
 
ready
jQuery w. querySelector
var baz = $(document.querySelector(".my-baz"));
ready
querySelectorAll (attribute)
var buz = document.querySelectorAll('[data-buz]');
ready
jQuery attribute selector
var buz = $('[data-buz]');
ready

Revisions

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