else if文のように上から順に比較をする場合、場合分けが増えると末端のケースの実行速度は低下します。頻繁に分岐するケースは先頭近くに配置してください。
【使用例】
引数の値によりリターン値を変えます。
改善前ソースコード
int func(int a) 
{
         if (a==1) 
                   a = 2; 
         else if (a==2) 
                   a = 4; 
         else if (a==3) 
                   a = 0; 
         else 
                   a = 0; 
         return(a); 
} 
 | 
 
改善前アセンブリ展開コード
_func:  
       CMP #01H,R1 
       BEQ L11 
L12: 
       CMP #02H,R1 
       BNE L14 
L13: 
       MOV.L #00000004H,R1 
       RTS 
L14: 
       CMP #03,R1 
       BNE L17 
L16: 
       MOV.L #00000008H,R1 
       RTS 
L17: 
       MOV.L #00000000H,R1 
       RTS 
L11: 
       MOV.L #00000002H,R1 
       RTS 
 | 
 
改善後ソースコード
int func(int a) 
{
       if (a==3) 
                 a = 8; 
       else if (a==2) 
                 a = 4; 
       else if (a==1) 
                 a = 2; 
       else 
                 a = 0; 
       return (a); 
} 
 | 
 
改善後アセンブリ展開コード
_func: 
        CMP #03H,R1 
        BEQ L11 
L12: 
        CMP #02H,R1 
        BNE L14 
L13: 
        MOV.L #00000004H,R1 
        RTS 
L14: 
        CMP #01H,R1 
        BNE L17 
L16: 
        MOV.L #00000002H,R1 
        RTS 
L17: 
        MOV.L #00000000H,R1 
        RTS 
L11: 
        MOV.L #00000008H,R1 
        RTS 
 |