if/else vs arrays vs switch vs ternary (v22)

Revision 22 of this benchmark created by Darren on


Description

checks performance of the many types of case iterators in javascript.

Preparation HTML

<script>
function Switch( x ) {
        switch ( x ) {
                case 1: return 10; break;
                case 2: return 18448; break;
                case 3: return 188888; break;
                case 4: return 166; break;
                case 5: return 1516; break;
                case 6: return 11105; break;
                case 7: return 1215; break; 
                case 8: return 1116; break;
        }       
}

function elseIf( x ) {
        if ( x == 1 ) return 10;
        else if ( x == 2 ) return 18448;
        else if ( x == 3 ) return 188888;
        else if ( x == 4 ) return 166;
        else if ( x == 5 ) return 1516;
        else if ( x == 6 ) return 11105;
        else if ( x == 7 ) return 1215;
        else if ( x == 8 ) return 1116;
}

var testObject = { 1: 10,2: 18448, 3: 188888, 4: 166, 5: 1516, 6: 11105, 7: 1215, 8:1116 };

function objects(x){
        return testObject[x]; 
}

var testArray = [0,10,18448,188888,166,1516,11105,1215,1116];

function arrays(x){  
        return testArray[x];
}

function ternary(x){
       var output = x==1?10:x==2?18448:x==3?188888:x==4?166:x==5?1516:x==6?11105:x==7?1215:x==8?1116:15;
       return output;
}
</script>

Setup

function Switch( x ) {
            switch ( x ) {
                    case 1: return 10; break;
                    case 2: return 18448; break;
                    case 3: return 188888; break;
                    case 4: return 166; break;
                    case 5: return 1516; break;
                    case 6: return 11105; break;
                    case 7: return 1215; break; 
                    case 8: return 1116; break;
            }       
    }
    
    function elseIf( x ) {
            if ( x === 1 ) return 10;
            else if ( x === 2 ) return 18448;
            else if ( x === 3 ) return 188888;
            else if ( x === 4 ) return 166;
            else if ( x === 5 ) return 1516;
            else if ( x === 6 ) return 11105;
            else if ( x === 7 ) return 1215;
            else if ( x === 8 ) return 1116;
    }
    
    var testObject = { 1: 10,2: 18448, 3: 188888, 4: 166, 5: 1516, 6: 11105, 7: 1215, 8:1116 };
    function objects(x){
            return testObject[x]; 
    }
    
    var testArray = [0,10,18448,188888,166,1516,11105,1215,1116];
    
    function arrays(x){
            return testArray[x];
    }
    
    function ternary(x){
           var output = x===1?10:x===2?18448:x===3?188888:x===4?166:x===5?1516:x===6?11105:x===7?1215:x===8?1116:15;
           return output;
    }
    
    var testObjectclosure = { 1: 10,2: 18448, 3: 188888, 4: 166, 5: 1516, 6: 11105, 7: 1215, 8:1116 };
    
    function objectClosute(x){
    return testObjectclosure [x]; 
    }

Test runner

Ready to run.

Testing in
TestOps/sec
switch
Switch(3);
ready
if else
elseIf(3);
ready
indexed arrays
arrays(3);
ready
object
objects(3);
ready
ternary
ternary(3);
ready
objectclosure
objectClosute(3);
ready

Revisions

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