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) {
var cn = el.className || '',
c = ' '+cn+' ',
p = ' '+className+' ';
if (c.indexOf(p)===-1) {
el.className = cn + (cn ? ' ' : '') + className;
}
}
function removeClass_className(el, className) {
var cn = el.className || '',
c = ' '+cn+' ',
p = ' '+className+' ';
if (c.indexOf(p)!==-1) {
c = c.replace(p,' ');
el.className = c.substring(1, c.length-2);
}
}
function addClass_classList(el, className) {
el.classList.add(className);
}
function removeClass_classList(el, className) {
el.classList.remove(className);
}
Ready to run.
Test | Ops/sec | |
---|---|---|
className RegExp |
| ready |
classList |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.