jQuery Parents vs Closest

JavaScript performance comparison

Revision 11 of this test case created

Info

Similar to parent vs closest, only this time testing when searching >1 level of the DOM ancestors.

Preparation code

<div>
  <table class="end">
    <tr>
      <td>
        <ul>
          <li>
            1
          </li>
          <li>
            2
          </li>
          <li>
            3
          </li>
          <li>
            4
          </li>
          <li>
            5
          </li>
          <li>
            6
            <ul>
              <li>
                1
              </li>
              <li>
                2
              </li>
              <li>
                2
              </li>
              <li>
                3
                <ul>
                  <li>
                    1
                  </li>
                  <li>
                    2
                  </li>
                  <li>
                    3
                  </li>
                  <li id="start">
                    4
                  </li>
                  <li>
                    5
                  </li>
                </ul>
              </li>
              <li>
                4
              </li>
              <li>
                5
              </li>
            </ul>
          </li>
          <li>
            7
          </li>
          <li>
            8
          </li>
          <li>
            9
          </li>
          <li>
            10
          </li>
        </ul>
      </td>
    </tr>
  </table>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>
<script>
Benchmark.prototype.setup = function() {
    function getParents(elem, num) {   
        while(num--) {         
                elem = elem.parent();
        }
        return elem;
    }
    function getParentsJS(elem, num) { 
        while(num--) {         
                elem = elem.parentNode;
        }
        return elem;
    }
};
</script>

Preparation code output

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
    • 1
    • 2
    • 2
    • 3
      • 1
      • 2
      • 3
      • 4
      • 5
    • 4
    • 5
  • 7
  • 8
  • 9
  • 10

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
Parents
$("#start").parents(".end")
pending…
Closest
$("#start").closest(".end");
pending…
Parent Parent
$("#start").parent().parent().parent().parent().parent().parent().parent().parent().parent();
pending…
Parent Parent Function
getParents($("#start"), 9);
pending…
Pure Javascript
document.getElementById('start').parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
pending…
Javascript selector vs jQuery selector
$("#start")[0].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
pending…
Javascript more beautiful
getParentsJS(document.getElementById('start'), 9);
pending…

Compare results of other browsers

Revisions

You can edit these tests or add even more tests to this page by appending /edit to the URL. Here’s a list of current revisions for this page:

0 comments

Add a comment