HTML Preparation code:
AخA
 
1
<div style='display: none'>
2
    <div id='node'>
3
        <name>cat</name>
4
        <not>blank</not>
5
        <not1>blank</not1>
6
        <not2>blank</not2>
7
        <not3>blank</not3>
8
        <not4>blank</not4>
9
        <type>bat</type>
10
    </div>
11
    <div id='attr' name='cat' type='bat' not='blank' not1='blank' not2='blank' not3='blank' not4='blank'></div>
12
    <div id='node2'><data>[name]cat[not]blank[not1]blank[not2]blank[not3]blank[not4]blank[type]bat[</data></div>
13
</div>
Script Preparation code:
x
 
var node = document.getElementById('node')
var attr = document.getElementById('attr')
var node2 = document.getElementById('node2')
var obj = { name:'cat', not:'blank', not1:'blank', not2:'blank', not3:'blank', not4:'blank', type:'bat' }
var al = {
  name:0,
  not:1,
  not1:2,
  not2:3,
  not3:4,
  not4:5,
  type:6
}
Tests:
  • write nodes with 7 child nodes

     
    let elem = node.firstElementChild;
    let n;
    do {
      if ( elem.nodeName === 'TYPE' ) {
        elem.nodeValue='rat';
        break;
      }
    } while (elem = elem.nextElementSibling)
  • write attribute with 7 attributes

     
     attr.getAttributeNode('type').value='rat';
  • write nodevalue with 7 string attributes

     
    let t = node2.firstElementChild.firstChild.nodeValue;
    let s = t.indexOf('[type]')+6
    let e = t.indexOf('[', s)
    let n = t.substring(0,s) + 'rat' + t.substring(e)
  • write nodes with 7 child nodes with children + index

     
    node.children[al['type']].nodeValue='rat';
  • write nodes with 7 child nodes with nextElementSibling + index

     
    let elem = node.firstElementChild;
    let n;
    for (let i = 0; i<10; i++) {
      if ( i === al['type'] ) {
        elem.nodeValue = 'rat';
        break;
      } 
    elem = elem.nextElementSibling
    }
  • write nodes with 7 child nodes with children + no index

     
    node.children[6].nodeValue='rat';
  • write nodes with 7 child nodes with nextElementSibling + no index

     
    let elem = node.firstElementChild;
    let n;
    for (let i = 0; i<10; i++) {
      if ( i === 6 ) {
        elem.nodeValue = 'rat';
        break;
      } 
    elem = elem.nextElementSibling
    }
  • obj with 7 items

     
    obj['type']='rat';
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    write nodes with 7 child nodes
    write attribute with 7 attributes
    write nodevalue with 7 string attributes
    write nodes with 7 child nodes with children + index
    write nodes with 7 child nodes with nextElementSibling + index
    write nodes with 7 child nodes with children + no index
    write nodes with 7 child nodes with nextElementSibling + no index
    obj with 7 items

    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
write nodes with 7 child nodes 1910044.2 Ops/sec
write attribute with 7 attributes 1773468.2 Ops/sec
write nodevalue with 7 string attributes 5243155.5 Ops/sec
write nodes with 7 child nodes with children + index 3029336.2 Ops/sec
write nodes with 7 child nodes with nextElementSibling + index 1349164.1 Ops/sec
write nodes with 7 child nodes with children + no index 3970345.2 Ops/sec
write nodes with 7 child nodes with nextElementSibling + no index 4039953.5 Ops/sec
obj with 7 items 14914012.0 Ops/sec