Does it traverse DOM

Benchmark created on


Preparation HTML

<div id="mark" data-test="true"></div>

Test runner

Ready to run.

Testing in
TestOps/sec
No element reference
for (let i = 0; i < 1000; i++) {
  document.querySelector('#mark').hasAttribute('data-test')
}
ready
One element reference
const el = document.querySelector('#mark');

for (let i = 0; i < 1000; i++) {
  el.hasAttribute('data-test')
}
ready
One element reference - multiple hasAttribute calls
const el = document.querySelector('#mark');

for (let i = 0; i < 1000; i++) {
  el.hasAttribute('data-test');
  el.hasAttribute('data-test');
}
ready
One element reference - multiple methods
const el = document.querySelector('#mark');

for (let i = 0; i < 1000; i++) {
  el.hasAttribute('data-test');
  el.getAttribute('data-test');
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.