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
How much faster is classList.add/remove than className regex manipulation?
<style type="text/css">
.foo { color:#F00; height:100px; opacity:0.3; } .bar { color:#0F0; height:200px;
opacity:0.5; } .baz { color:#00F; height:300px; opacity:0.7; }
</style>
<div id="base" class="foo bar">
<div class="foo bar baz">
test 1
</div>
<span class="foo bar">
test 2
</span>
<span class="baz">
test 3
</span>
</div>
var node = document.getElementById('base'),
className = 'baz';
function addClass_className(el, className) {
el.className += " " + className;
}
function removeClass_className(ele, cls) {
var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
ele.className = ele.className.replace(reg, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, ''); //last 2 replaces do right trim (see http://blog.stevenlevithan.com/archives/faster-trim-javascript)
}
node.className = '';
Ready to run.
Test | Ops/sec | |
---|---|---|
classList (add) |
| ready |
className (add) walkontable 0.2.0 |
| ready |
className raw |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.