La diferencia real la hace la estructura que se utiliza.
Supongamos este ejemplo
Código
El codigo este va hacer 10 comparaciones inutiles para llegar a ejcutar el "else" que es lo que vale.
memoria[i] = 556; if(memoria[i]=='1') control = 1; else if(memoria[i]=='2')control = 2; else if(memoria[i]=='3')control = 3; else if(memoria[i]=='4')control = 4; else if(memoria[i]=='5')control = 5; else if(memoria[i]=='6')control = 6; else if(memoria[i]=='7')control = 7; else if(memoria[i]=='8')control = 8; else if(memoria[i]=='9')control = 9; else if(memoria[i]=='0')control = 0; else control = 0;
Entonces a mi criterio la mejor optimizacion que se puede hacer , es poner primero las condiciones que tengan más probabilidad de suceder. De manera que se ejecutén menos comparaciones y se pierda menos el tiempo.
La ventaja de switch-case es que tenemos la posibilidad de utilizar o no el Break cosa que se pueden agrupar varios casos en un mismo grupo.
Saludos.