3f_and_jQ

JavaScript performance comparison

Revision 3 of this test case created by Evghenusi

Preparation code

<p name="p">1</p>
<p class="p">2</p>
<p id="p">3</p>
<p name="p">4</p>
<p class="p">5</p>
<p name="p">6</p>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
function f1(a,b){a=a.match(/^(\W)?(.*)/);return(b||document)["getElement"+(a[1]?a[1]=="#"?"ById":"sByClassName":"sByTagName")](a[2])}

function f2(i,f,s){f=i[0];s=i.substr(1);return document['getElement'+({'#':'ById','.':'sByClassName'}[f]||'sByTagName')]({'#':s,'.':s}[f]||i)}

function f3(s){return document['getElement'+({'#':'ById','.':'sByClassName',$:'sByName'}[c=s[0]]||'sByTagName')](s.slice(c<'@'))}

function f4(a){a=/([#.]?)(.*)/.exec(a||'*');a=document['getElement'+(a[1]>'-'?'sByClassName':a[1]?'ById':'sByTagName')](a[2]);return a[0]||a}

function f5(s){return document['getElement'+({'#':'ById','.':'sByClassName',$:'sByName'}[c=s[0]]||'sByTagName')](s.substr(c<'@'))}

function f6(s){return document['getElement'+({'#':'ById','.':'sByClassName',$:'sByName'}[s[0]]||'sByTagName')](s.substr(s[0]<'@'))}
</script>

Preparation code output

1

2

3

4

5

6

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
1
a = f1('#p').innerHTML;
b = f1('.p').length;
c = f1('p').length;
pending…
2
a = f2('#p').innerHTML;
b = f2('.p').length;
c = f2('p').length;
pending…
3
a = f3('#p').innerHTML;
b = f3('.p').length;
c = f3('p').length;
pending…
4
a = $('#p').html();
b = $('.p').size();
c = $('p').size();
pending…
5
a = f4('#p').innerHTML;
b = f4('.p').length;
c = f4('p').length;
pending…
6
a = f5('#p').innerHTML;
b = f5('.p').length;
c = f5('p').length;
pending…
7
a = f6('#p').innerHTML;
b = f6('.p').length;
c = f6('p').length;
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:

0 comments

Add a comment