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

Revision 23 of this benchmark created on


Description

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

Preparation HTML

<script>
var testObject = { 1: 10, 2: 18448, 3: 188888, 4: 166, 5: 1516, 6: 11105, 7: 1215, 8:1116, 9: 10, 10: 18448, 
                                        11: 10, 12: 18448, 13: 188888, 14: 166, 15: 1516, 16: 11105, 17: 1215, 18:1116, 19: 10, 20: 18448,
                                        21: 10, 22: 18448, 23: 188888, 24: 166 };
var testArray = [10,18448,188888,166,1516,11105,1215,1116,10,18448,188888,166,1516,11105,1215,1116,10,18448,188888,166,1516,11105,1215,1116];
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;
                                case 9: return 10; break;
                case 10: return 18448; break;
                case 11: return 188888; break;
                case 12: return 166; break;
                case 13: return 1516; break;
                case 14: return 11105; break;
                case 15: return 1215; break; 
                case 16: return 1116; break;
                                case 17: return 10; break;
                case 18: return 18448; break;
                case 19: return 188888; break;
                case 20: return 166; break;
                case 21: return 1516; break;
                case 22: return 11105; break;
                case 23: return 1215; break; 
                case 24: 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;
                else if ( x == 9 ) return 18448;
        else if ( x == 10 ) return 188888;
        else if ( x == 11 ) return 166;
        else if ( x == 12 ) return 1516;
        else if ( x == 13 ) return 11105;
        else if ( x == 14 ) return 1215;
        else if ( x == 15 ) return 1116;
                else if ( x == 16 ) return 18448;
        else if ( x == 17 ) return 188888;
        else if ( x == 18 ) return 166;
        else if ( x == 19 ) return 1516;
        else if ( x == 20 ) return 11105;
        else if ( x == 21 ) return 1215;
        else if ( x == 22 ) return 1116;
                else if ( x == 23 ) return 18448;
        else if ( x == 24 ) return 188888;
   
}

function objects(x){

        return testObject[x]; 
}

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

function ternary(x){
       return 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;
      
}
</script>

Setup

var testObject = { 1: 10, 2: 18448, 3: 188888, 4: 166, 5: 1516, 6: 11105, 7: 1215, 8:1116, 9: 10, 10: 18448, 
                                        11: 10, 12: 18448, 13: 188888, 14: 166, 15: 1516, 16: 11105, 17: 1215, 18:1116, 19: 10, 20: 18448,
                                        21: 10, 22: 18448, 23: 188888, 24: 166 };
    var testArray = [10,18448,188888,166,1516,11105,1215,1116,10,18448,188888,166,1516,11105,1215,1116,10,18448,188888,166,1516,11105,1215,1116];
    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;
                                case 9: return 10; break;
                    case 10: return 18448; break;
                    case 11: return 188888; break;
                    case 12: return 166; break;
                    case 13: return 1516; break;
                    case 14: return 11105; break;
                    case 15: return 1215; break; 
                    case 16: return 1116; break;
                                case 17: return 10; break;
                    case 18: return 18448; break;
                    case 19: return 188888; break;
                    case 20: return 166; break;
                    case 21: return 1516; break;
                    case 22: return 11105; break;
                    case 23: return 1215; break; 
                    case 24: 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;
                else if ( x == 9 ) return 18448;
            else if ( x == 10 ) return 188888;
            else if ( x == 11 ) return 166;
            else if ( x == 12 ) return 1516;
            else if ( x == 13 ) return 11105;
            else if ( x == 14 ) return 1215;
            else if ( x == 15 ) return 1116;
                else if ( x == 16 ) return 18448;
            else if ( x == 17 ) return 188888;
            else if ( x == 18 ) return 166;
            else if ( x == 19 ) return 1516;
            else if ( x == 20 ) return 11105;
            else if ( x == 21 ) return 1215;
            else if ( x == 22 ) return 1116;
                else if ( x == 23 ) return 18448;
            else if ( x == 24 ) return 188888;
       
    }
    
    function objects(x){
    
            return testObject[x]; 
    }
    
    function arrays(x){
            
            return testArray[x-1];
    }
    
    function ternary(x){
           return 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;
          
    }

Test runner

Ready to run.

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

Revisions

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