<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>
<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.querySelectorAll(".test").forEach(function (el) { el.remove() })
Array.from(document.getElementsByClassName(".test")).forEach(function (el) { el.remove() })
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
querySelectorAll | |
getElementsByClassName |
Test name | Executions per second |
---|---|
querySelectorAll | 859996.1 Ops/sec |
getElementsByClassName | 1235914.4 Ops/sec |
I'll provide an explanation of the benchmark, its options, pros and cons, and other considerations.
Benchmark Definition
The benchmark compares two approaches to removing elements from a collection:
querySelectorAll
with forEach
getElementsByClassName
with forEach
Options
There are two options being compared:
A) querySelectorAll
: This method returns an HTMLCollection of all elements that match the specified selector (in this case, .test
). The forEach
method is then used to iterate over the collection and remove each element.
B) getElementsByClassName
: This method returns a NodeList of all elements whose class attribute matches the specified value (in this case, .test
). The forEach
method is then used to iterate over the NodeList and remove each element.
Pros and Cons
A) querySelectorAll
:
Pros:
Cons:
B) getElementsByClassName
:
Pros:
Cons:
Other Considerations
remove()
method is used to remove each element from the DOM, which can affect performance if not done correctly.Library and Purpose
In this case, no specific library is used. However, some libraries like jQuery or Lodash might be used to simplify the comparison.
Special JS Feature or Syntax
There is no special JS feature or syntax being tested in this benchmark. The focus is on comparing two basic DOM manipulation methods.
Other alternatives to these methods include:
querySelector
and then
(for promises) to retrieve elementsArray.prototype.filter()
and forEach()
to remove elements from an array-like object