jsPerf.app is an online JavaScript performance benchmark test runner & jsperf.com mirror. It is a complete rewrite in homage to the once excellent jsperf.com now with hopefully a more modern & maintainable codebase.
jsperf.com URLs are mirrored at the same path, e.g:
https://jsperf.com/negative-modulo/2
Can be accessed at:
https://jsperf.app/negative-modulo/2
Testing out the performance of Dojo's HTML addClass/removeClass/toggleClass methods against HTML5's native support for ClassList.
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.8.1/dojo/dojo.js">
</script>
<div id="empty_class">
</div>
<div class="a_class" id="single_class">
</div>
<div class="a_class b_class c_class" id="many_classes">
</div>
<script>
require(['dojo/dom-class', 'dojo/dom', "dojo/has"], function(dClass, dDom, has) {
domClass = dClass;
dom = dDom;
// mostly blind code, sorry
// this shall be added to has.js and/or dojo or both
has.add("dom-class-list", function(global, document, anElement) {
return "classList" in anElement;
});
// new method here, but shall be included in dojo impl or used as extension
dClass.contains1 = has("dom-class-list") ?
function(node, classStr) {
return dDom.byId(node).classList.contains(classStr);
//TODO: check for border conditions in orig. dojo impl.
} : dClass.contains;
// just debug
console.debug('has("dom-class-list"):', has("dom-class-list"));
console.debug('dClass.contains1', dClass.contains1);
});
</script>
Ready to run.
Test | Ops/sec | |
---|---|---|
Add Class - Dojo |
| ready |
Add Class - HTML5 |
| ready |
Remove Class - Dojo |
| ready |
Remove Class - HTML5 |
| ready |
Toggle Class - Dojo |
| ready |
Toggle Class - HTML5 |
| ready |
Has Class - Dojo |
| ready |
Has Class - HTML5 |
| ready |
classList add with dojo byId |
| ready |
classList remove with dojo byId |
| ready |
classList toggle with dojo byId |
| ready |
classList contains with dojo byId |
| ready |
Has Class - Dojo - with feature detection |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.