YUI v3.6.0 vs. jQuery v1.8.1 vs Dojo 1.8.0 DOM queries

JavaScript performance comparison

Revision 40 of this test case created by Andrew

Info

Fixed issues with the tests which causes incorrect results: * All but the native selector were not actually selecting anything since they were just querying the index. * dojo test was returning the query object rather then actually executing the callback block

Preparation code

<script src="http://yui.yahooapis.com/3.6.0/build/yui/yui-min.js">
</script>
<script src="http://code.jquery.com/jquery-1.8.1.min.js">
</script>
 <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.8.0/dojo/dojo.js"></script>
<div id="test">
  <div class="testlink">
    <a href="#" id="linkone" title="test">test link</a>
  </div>
  <div class="testmenu">
    <ul>
      <li class="menuitem itemone">
        <a href="#" title="item 1">menu item 1</a>
      </li>
      <li class="menuitem itemtwo">
        <a href="#" title="item 2">menu item 2</a>
      </li>
      <li class="menuitem itemthree">
        not clickable item 3
      </li>
    </ul>
  </div>
</div>
<script>
Benchmark.prototype.setup = function() {
    var selectors = ['body', 'div', 'body div', 'div a', 'div > a', 'div[class^=test]', 'div, li, a', '.menuitem', 'li.menuitem', '#linkone', 'div#test', 'a[title*=item]', 'a[title=test]', 'li:nth-child(even)', 'li:nth-child(odd)', 'li:last-child', 'li:first-child'];
};
</script>

Preparation code output

Test runner

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

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
jQuery v1.8
for (var sel in selectors) {
  $(selectors[sel]).length;
}
pending…
YUI v3.6.0
YUI().use('node', function(Y) {
  for (var sel in selectors) {
    Y.one(selectors[sel]).length;
  }
});
pending…
Dojo 1.8
require(["dojo/query"], function(query) {
  for (var sel in selectors) {
    query(selectors[sel]).length
  }
});
pending…
querySelector
for (var sel in selectors) {
   document.querySelectorAll(selectors[sel]).length;
};
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