getElementsByClassName VS querySelectorAll
JavaScript performance comparison
Preparation code
<script src="//ajax.googleapis.com/ajax/libs/mootools/1.3/mootools-yui-compressed.js"></script>
<div>
<ul>
<li><a href="#" name="name" class="classname">item 1</a></li>
<li><a href="#" name="name" class="classname">item 2</a></li>
<li><a href="#" name="name" class="classname">item 3</a></li>
<li><a href="#" name="name" class="classname">item 4</a></li>
<li><a href="#" name="name" class="classname">item 5</a></li>
<li><a href="#" name="name" class="classname">item 6</a></li>
<li><a href="#" name="name" class="classname">item 7</a></li>
<li><a href="#" name="name" class="classname">item 8</a></li>
<li><a href="#" name="name" class="classname">item 9</a></li>
<li><a href="#" name="name" class="classname">item 10</a></li>
</ul>
</div>
<script>
var nodes;
</script>
<script>
Benchmark.prototype.setup = function() {
var App = {};
var found = [], className, matchClass, i;
var $c = function(str) {
var nodes = document.getElementsByTagName('*');
for (i = 0; node = nodes[i++];){
className = node.className;
matchClass = new RegExp('(^|\\s)'+ str +'(\\s|$)');
if (matchClass.test(className)) found.push(node);
}
return found;
};
};
</script>
Preparation code output
Test runner
Warning! For accurate results, please disable Firebug before running the tests. (Why?)
Java applet disabled.
| Test | Ops/sec | |
|---|---|---|
getElementsByClassName |
|
pending… |
querySelectorAll |
|
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:
- Revision 1: published by t32k
- Revision 2: published by t32k
- Revision 4: published by MatrixFrog
- Revision 5: published
- Revision 6: published
- Revision 7: published
- Revision 8: published
- Revision 11: published
- Revision 14: published by Nonlinearcode
- Revision 15: published by Silviu Catarau
- Revision 16: published
- Revision 17: published
- Revision 18: published by sys
- Revision 19: published by pavelrevers
- Revision 20: published by pavelrevers
- Revision 21: published
- Revision 23: published
- Revision 24: published
- Revision 25: published
- Revision 26: published
- Revision 27: published
- Revision 31: published
0 comments