<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
<div class="test"></div>
document.getElementsByClassName("test")
document.getElementsByTagName("div")
document.querySelectorAll("div")
document.querySelectorAll(".test")
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
getElementsByClassName | |
getElementsByTagName | |
querySelectorAll tagname | |
querySelectorAll class |
Test name | Executions per second |
---|---|
getElementsByClassName | 3325579.2 Ops/sec |
getElementsByTagName | 3099179.0 Ops/sec |
querySelectorAll tagname | 505006.2 Ops/sec |
querySelectorAll class | 480000.0 Ops/sec |
Let's break down the benchmark and explain what's being tested, compared, and their pros and cons.
Benchmark Definition: The benchmark definition is an array of individual test cases, each containing a "Benchmark Definition" property that specifies the JavaScript code to be executed. In this case, we have four test cases:
document.getElementsByClassName("test")
document.getElementsByTagName("div")
document.querySelectorAll("div")
document.querySelectorAll(".test")
These tests aim to measure the performance of different methods for selecting elements from a DOM.
What's being tested:
getElementsByClassName
method, which returns a live HTMLCollection of all elements that have the specified class name.getElementsByTagName
method, which returns a live HTMLCollection of all elements with the specified tag name.querySelectorAll
method with a tag name selector, which returns a NodeList of all elements that match the given tag name.querySelectorAll
method with a class selector, which returns a NodeList of all elements that have the specified class name.Comparison:
The tests are comparing the performance of these different methods for selecting elements from a DOM. The goal is to determine which method is fastest and most efficient.
Pros and Cons:
querySelectorAll
due to its live collection nature.getElementsByClassName
, returns a live collection of all elements matching the tag name.getElementsByClassName
or querySelectorAll class
.querySelectorAll tagName
, but allows for class selectors instead of just tag names. Cons - slower than getElementsByClassName
due to its live collection nature.Library and syntax:
No specific libraries are used in these tests, as they rely on native browser APIs. However, it's worth noting that some browsers may have additional features or optimizations for certain methods (e.g., Chrome has improved performance for querySelectorAll
) that might be explored in future benchmarks.
Other alternatives:
If you wanted to add more test cases or compare different approaches, you could consider:
querySelector
, getElementById
, or getElementsByTagNameById
.Feel free to ask if you'd like me to elaborate on any of these points!