<ul id="theList">
<li class="odd">Item 1</li>
<li class="even">Item 2</li>
<li class="odd">Item 3</li>
<li class="even">Item 4</li>
<li class="odd">Item 5</li>
<li class="even">Item 6</li>
<li class="odd">Item 7</li>
<li class="even">Item 8</li>
<li class="odd">Item 9</li>
<li class="even">Item 10</li>
<li class="odd">Item 11</li>
<li class="even">Item 12</li>
<li class="odd">Item 13</li>
<li class="even">Item 14</li>
<li class="odd">Item 15</li>
<li class="even">Item 16</li>
<li class="odd">Item 17</li>
<li class="even">Item 18</li>
<li class="odd">Item 19</li>
<li class="even">Item 20</li>
<li class="odd">Item 21</li>
<li class="even">Item 22</li>
<li class="odd">Item 23</li>
<li class="even">Item 24</li>
<li class="odd">Item 25</li>
<li class="even">Item 26</li>
<li class="odd">Item 27</li>
<li class="even">Item 28</li>
<li class="odd">Item 29</li>
<li class="even">Item 30</li>
</ul>
var els = $('.even');
var els = document.querySelectorAll('.even');
var els = document.getElementsByClassName('even');
var els = $('li.even');
var els = document.querySelectorAll('li.even');
var els = document.getElementById("theList").querySelectorAll('.even');
var els = $('#theList .even');
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
jQuery | |
querySelectorAll | |
getElementsByClassName | |
jQuery: mixed selector | |
querySelectorAll: mixed selector | |
with Id | |
jQuery with Id |
Test name | Executions per second |
---|---|
jQuery | 321996.2 Ops/sec |
querySelectorAll | 67061.2 Ops/sec |
getElementsByClassName | 2774280.0 Ops/sec |
jQuery: mixed selector | 47010.3 Ops/sec |
querySelectorAll: mixed selector | 63798.1 Ops/sec |
with Id | 543623.4 Ops/sec |
jQuery with Id | 156015.8 Ops/sec |
Let's dive into the world of JavaScript microbenchmarks.
What is being tested?
MeasureThat.net is testing four different ways to retrieve elements by class name in HTML documents:
$('.even')
)querySelectorAll
(a native browser API, not part of jQuery)getElementsByClassName
$('#theList .even')
)These methods are tested on different browsers and devices to determine which one is the fastest.
Options compared
The four options being compared are:
#
selector to target an element and then using querySelectorAll
on that element.Pros and cons of each approach
Here are some pros and cons of each approach:
className
attribute.querySelectorAll
.Browser-specific observations
From the benchmark results, we can observe that:
getElementsByClassName
is generally faster than jQuery and querySelectorAll
(with ID selector) for the .even
class.querySelectorAll
with an attribute selector ([class="even"]
) is faster than jQuery for the .even
class.In conclusion, the choice of method depends on your specific use case and priorities:
getElementsByClassName
if you need a lightweight solution with fast performance.querySelectorAll
(with attribute selectors) for optimal performance and flexibility.Keep in mind that this benchmark is specific to retrieving elements by class name, and results may vary depending on your specific requirements.