<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
<div class="test" data-test></div>
var test = document.querySelectorAll('[data-test]');
var test = document.querySelectorAll('.test');
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
data attribute | |
class name |
Test name | Executions per second |
---|---|
data attribute | 579825.8 Ops/sec |
class name | 1177092.1 Ops/sec |
Let's break down the provided benchmark and explain what is being tested, compared options, pros and cons of those approaches, and other considerations.
Benchmark Overview
The provided benchmark measures the performance difference between using data attributes (data-test
) and class names (test
) to select elements in JavaScript. The test creates a HTML page with 20 identical elements that contain either data-test
or .test
.
Individual Test Cases
There are two test cases:
document.querySelectorAll('[data-test]')
method to select all elements that have a data-test
attribute.document.querySelectorAll('.test')
method to select all elements with the class name test
.Comparison of Approaches
Both approaches are used to select multiple elements based on a specific condition (presence of an attribute or class name). The main difference lies in how the browser processes these conditions.
Pros and Cons
Data Attribute:
Pros:
Cons:
Class Name:
Pros:
Cons:
Other Considerations
Alternatives
Other approaches to select elements could have been used in this benchmark, such as:
document.getElementsByClassName('test')
(similar to using class names)document.getElementById()
with a query string (e.g., document.getElementById('[data-test]')
)document.querySelectorAll('.test > *')
)querySelector
method with an attribute selector (e.g., document.querySelector('[data-test]')
)These alternatives might have altered the results or performance characteristics of the benchmark.