queryselector vs each

Benchmark created on


Preparation HTML

<ul>
        <li data-test="test"></li>
        <li></li>
        <li data-test="test"></li>
        <li></li>
        <li data-test="test"></li>
        <li></li>
        <li data-test="test"></li>
        <li></li>
        <li data-test="test"></li>
        <li></li>
        <li data-test="test"></li>
        <li></li>
        <li data-test="test"></li>
        <li></li>
        <li data-test="test"></li>
        <li></li>
        <li data-test="test"></li>
        <li></li>
        <li data-test="test"></li>
        <li></li>
</ul>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

Setup

jQuery.extend(jQuery.expr[':'], {
      'has-dependency': (function() {
        if (typeof document.getElementsByTagName("html")[0].dataset === "object")
          return function(el, index, args) {
            if (typeof(dependency = el.dataset.test) !== "undefinded")
              return ("," + dependency + ",").indexOf("," + args[3] + ",") > -1;
            else
              return false;
          };
        else
          return function(el, index, args) {
            if (typeof(dependency = el.getAttribute("data-test")) === "string")
              return ("," + dependency + ",").indexOf("," + args[3] + ",") > -1;
            else
              return false;
          };
      })()
    });

Test runner

Ready to run.

Testing in
TestOps/sec
queryselector
document.getElementsByTagName("ul")[0].querySelectorAll("[data-test]");
ready
each
$("ul").filter(":has-dependency(test)");
ready

Revisions

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