HTML Preparation code:
x
 
1
<html>
2
3
<body>
4
    <div id='test'>
5
        <div class='item' id='a' name='a'></div>
6
        <div class='item' id='b' name='b'></div>
7
        <div class='item' id='c' name='c'></div>
8
    </div>
9
</body>
10
11
</html>
Script Preparation code:
 
var parent = document.getElementById('test');
var store1 = [];
var store2 = [];
parent.childNodes.forEach(function (node) {
  if ( node.nodeName !== '#text') {
  store1.push( node );
  store2.push( { name: node.attributes.name.value } );
  }
});
Tests:
  • fastest iter childelements

     
    let elem = parent.firstElementChild;
    do {
      let n = elem.attributes.name.value;
    } while (elem = elem.nextElementSibling)
  • tag name

     
    let children = parent.getElementsByTagName('div');
    for (let i = 0; i < children.length; i++) {
      let n = children[i].attributes.name.value;
    }
  • class name

     
    let children = parent.getElementsByClassName('item')
    for (let i = 0; i < children.length; i++) {
      let n = children[i].attributes.name.value;
    }
  • id

     
    let n1 = document.getElementById('a').attributes.name.value;
    let n2 = document.getElementById('b').attributes.name.value;
    let n3 = document.getElementById('c').attributes.name.value;
  • array of node

     
    for (let i = 0; i < store1.length; i++) {
      let n = store1[i].attributes.name.value;
    }
  • array item

     
    for (let i = 0; i < store2.length; i++) {
      let n = store2[i].name;
    }
  • fastest iter childelements + getAttribute

     
    let elem = parent.firstElementChild;
    do {
      let n = elem.getAttribute('name');
    } while (elem = elem.nextElementSibling)
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    fastest iter childelements
    tag name
    class name
    id
    array of node
    array item
    fastest iter childelements + getAttribute

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 3 years ago)
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
Chrome 95 on Linux
View result in a separate tab
Test name Executions per second
fastest iter childelements 1264905.4 Ops/sec
tag name 827169.4 Ops/sec
class name 810626.9 Ops/sec
id 608968.5 Ops/sec
array of node 792838.8 Ops/sec
array item 2102137.2 Ops/sec
fastest iter childelements + getAttribute 2078095.9 Ops/sec