siblings

Benchmark created on


Preparation HTML

<div class="foo">
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar target">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
  <span class="bar">test</span>
</div>

Setup

const elem = document.querySelector('.target');
let getSiblings = function(e) {
    let siblings = [];
    if (!e.parentNode) {
        return siblings;
    }
    let sibling = e.parentNode.firstChild;

    while (sibling) {
        if (sibling.nodeType === 1 && sibling !== e) {
            siblings.push(sibling);
        }
        sibling = sibling.nextSibling;
    }
    return siblings;
};

Test runner

Ready to run.

Testing in
TestOps/sec
parentNode.children
let siblings1 = Array.from(elem.parentNode.children).filter(el => el !== elem);
ready
previousElementSibling and nextElementSibling
let siblings2 = [];
let prevSibling = elem.previousElementSibling;
while (prevSibling) {
  siblings2.push(prevSibling);  
  prevSibling = prevSibling.previousElementSibling;
}
let nextSibling = elem.nextElementSibling;
while (nextSibling) {
  siblings2.push(nextSibling);  
  nextSibling = nextSibling.nextElementSibling;
}
ready
parentNode.firstChild
let siblings3 = getSiblings(elem);
ready

Revisions

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