jQuery addClass vs native setAttribute (v2)

Revision 2 of this benchmark created by Ian on


Preparation HTML

<h1>Header One</h1>

<p>Lorem ipsum <em>emphasised text</em> dolor sit amet, <strong>strong text</strong> 
consectetur adipisicing elit, <abbr title="">abbreviated text</abbr> sed do eiusmod tempor 
<acronym title="">acronym text</acronym> incididunt ut labore et dolore magna aliqua. Ut 
<q>quoted text</q> enim ad minim veniam, quis nostrud exercitation <a href="/">link text</a> 
ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute <del>deleted text</del> 
<ins>inserted text</ins> irure dolor in reprehenderit in voluptate velit esse cillum 
dolore eu fugiat nulla pariatur. Excepteur sint occaecat <code>code text</code> cupidatat 
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

<blockquote>
<p>Blockquote. Velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat 
cupidatat non proident, sunt in culpa qui officia</p>
</blockquote>

<p><cite><a href="/">Cite author with link text</a></cite>, 2008</p>

<h2>Header 2</h2>

<p>Extended paragraph. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud 
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in 
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint 
occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

<ol>
<li>Ordered list</li>
<li>Item 2 Consectetur adipisicing elit</li>
<li>Item 3 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor 
incididunt ut labore et dolore magna aliqua</li>
<li>Item 4</li>
<li>Item 5</li>
</ol>

<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit 
anim id est laborum.</p>

<h3>Header 3</h3>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
ut labore et dolore magna aliqua.</p>

<ul>
<li>Unordered list</li>
<li>Consectetur adipisicing elit</li>
<li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
ut labore et dolore magna aliqua</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>

<p>Lorem ipsum dolor sit amet,consectetur adipisicing elit, sed do eiusmod tempor incididunt 
ut labore et dolore magna aliqua.</p>

<pre><code>pre and code pair{
display:block;
line-height:1.833em;
border-top:0.083em solid #200;
}</code></pre>

<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit 
anim id est laborum.</p>

<h4>Header 4</h4>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
ut labore et dolore magna aliqua.</p>

<dl>
<dt>Definition list</dt>
<dd>Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna 
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea 
commodo consequat.</dd>
<dt>Lorem ipsum dolor sit amet</dt>
<dd>Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna 
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea 
commodo consequat.</dd>
<dt>Lorem ipsum dolor sit amet</dt>
<dd>Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna 
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea 
commodo consequat.</dd>
<dt>Lorem ipsum dolor sit amet</dt>
<dd>Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna 
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea 
commodo consequat.</dd>
</dl>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
ut labore et dolore magna aliqua.</p>

<table summary="Table summary">
<caption>Table Caption</caption>
<thead>
<tr>
<th>Header</th><th>Header</th><th>Header</th>
</tr>
</thead>
<tbody>
<tr>
<td>Content</td><td>1</td><td>a</td>
</tr>
<tr>
<td>Content</td><td>2</td><td>b</td>
</tr>
<tr>
<td>Content</td><td>3</td><td>c</td>
</tr>
<tr>
<td>Content</td><td>4</td><td>d</td>
</tr>
<tr>
<td>Content</td><td>5</td><td>e</td>
</tr>
<tr>
<td>Content</td><td>6</td><td>f</td>
</tr>
</tbody>
</table>

<address>Author text</address>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

Setup

var hasClass = function(el, klass) {
      return (new RegExp('(\\s|^)' + klass + '(\\s|$)').test(el.className));
    };

Teardown


    $('*').removeClass('tappable').removeAttr('data-tappable');
  

Test runner

Ready to run.

Testing in
TestOps/sec
Classes
$('*:nth-child(odd)').each(function() {
  $(this).addClass("tappable");
});

$('*').filter(function() { return !hasClass(this, "tappable"); });
ready
Attributes
$('*:nth-child(odd)').each(function() {
  $(this).attr('data-tappable', 'yes');
});

$('*').filter(function() { return this.getAttribute("data-tappable") !== "yes"; });
ready
Set classes
$('*:nth-child(odd)').each(function() {
  $(this).addClass("tappable");
});
ready
Set attributes
$('*:nth-child(odd)').each(function() {
  $(this).attr('data-tappable', 'yes');
});
ready
Get classes
$('*').filter(function() { return !hasClass(this, "tappable"); });
ready
Get attributes
$('*').filter(function() { return this.getAttribute("data-tappable") !== "yes"; });
ready
jQuery attribute selector
$('[data-tappable!="yes"]');
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.