Native Sizzle.js vs .querySelectorAll vs jQuery (v7)

Revision 7 of this benchmark created on


Preparation HTML

<script type="text/javascript" src="//raw.githubusercontent.com/jquery/sizzle/master/dist/sizzle.min.js"></script>
<script type="text/javascript" src="//code.jquery.com/jquery-1.8.0.min.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>
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'],
    menu = $('.testmenu'),
    ul = menu.find('ul');

</script>

Test runner

Ready to run.

Testing in
TestOps/sec
.querySelectorAll
for (var sel in selectors) {
 document.querySelectorAll(selectors[sel]);
}
ready
jQuery
for (var sel in selectors) {
 $(selectors[sel]);
}
ready
Sizzle.js w/ .querySelectorAll
for (var sel in selectors) {
 Sizzle(selectors[sel]);
}
ready
Sizzle.js w/o .querySelectorAll
document.querySelectorAll = null;
for (var sel in selectors) {
 Sizzle(selectors[sel]);
}
ready

Revisions

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