Run details:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.1 Safari/605.1.15
Safari 18
Mac OS X 10.15.7
Desktop
6 months ago
Test name Executions per second
getElementById() 12466793.0 Ops/sec
getElementsByClassName() 10529344.0 Ops/sec
getElementsByTagName() 10486617.0 Ops/sec
querySelector(#id) 5575179.5 Ops/sec
querySelector(.id) 5782625.5 Ops/sec
querySelectorAll(#id) 3628498.2 Ops/sec
querySelectorAll(.id) 7159833.5 Ops/sec
jQuery(#id) 6717068.0 Ops/sec
jQuery(.id) 4713057.5 Ops/sec
jQuery(tag#id) 2842685.0 Ops/sec
jQuery(tag.id) 2855967.2 Ops/sec
jQuery + getElementById 5638867.5 Ops/sec
jQuery + getElementsByClassName 4731742.0 Ops/sec
jQuery + querySelectorAll 3974278.2 Ops/sec
querySelectorAll in function 7030800.0 Ops/sec
HTML Preparation code:
AخA
 
1
<script src="https://cdnjs.cloudflare.com/ajax/libs/cash/6.0.1/cash.min.js"></script>
2
<div id="foo" class="foo2"></div>
Tests:
  • getElementById()

     
    var el = document.getElementById('foo');
    var className = el.className;
  • getElementsByClassName()

     
    var el = document.getElementsByClassName('foo2')[0];
    var className = el.className;
  • getElementsByTagName()

     
    var el = document.getElementsByTagName('div')[0];
    var className = el.className;
  • querySelector(#id)

     
    var el = document.querySelector('#foo');
    var className = el.className;
  • querySelector(.id)

     
    var el = document.querySelector('.foo2');
    var className = el.className;
  • querySelectorAll(#id)

     
    var el = document.querySelectorAll('#foo')[0];
    var className = el.className;
  • querySelectorAll(.id)

     
    var el = document.querySelectorAll('.foo2')[0];
    var className = el.className;
  • jQuery(#id)

     
    var el = $('#foo')[0];
    var className = el.className;
  • jQuery(.id)

     
    var el = $('.foo2')[0];
    var className = el.className;
  • jQuery(tag#id)

     
    var el = $('div#foo')[0];
    var className = el.className;
  • jQuery(tag.id)

     
    var el = $('div.foo2')[0];
    var className = el.className;
  • jQuery + getElementById

     
    var el = $(document.getElementById('foo'))[0];
    var className = el.className;
  • jQuery + getElementsByClassName

     
    var el = $(document.getElementsByClassName('foo2'))[0];
    var className = el.className;
  • jQuery + querySelectorAll

     
    var el = $(document.querySelectorAll('.foo2'))[0];
    var className = el.className;
  • querySelectorAll in function

     
    var el = (function(selector){return document.querySelectorAll(selector);})('.foo2');
    var className = el[0].className;