className VS classList Showdown
JavaScript performance comparison
Info
How much faster is classList.add/remove than className regex manipulation?
Preparation code
<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>
<script>
Benchmark.prototype.setup = function() {
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);
}
};
</script>
Preparation code output
Test runner
Warning! For accurate results, please disable Firebug before running the tests. (Why?)
Java applet disabled.
| Test | Ops/sec | |
|---|---|---|
add RegExp |
|
pending… |
add classList |
|
pending… |
remove className |
|
pending… |
remove classList |
|
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 Jason Miller
- Revision 2: published
- Revision 3: published by Jason Miller
- Revision 5: published by Marcin
- Revision 6: published
0 comments