¿Cómo se implementó o funciona internamente la statement de cambio de caso?

Leí en alguna parte que la instrucción switch usa “Binary Search” o algunas técnicas de ordenamiento para elegir exactamente la maleta correcta y esto aumenta su rendimiento en comparación con else-if ladder.

Y también si damos el caso en orden, ¿el cambio funciona más rápido? ¿es tan? ¿Puedes agregar tus valiosas sugerencias sobre esto?

Discutimos aquí sobre lo mismo y planeamos publicarlo como una pregunta.

En realidad, depende del comstackdor cómo se realiza una instrucción switch en el código.

Sin embargo, tengo entendido que cuando es adecuado (es decir, casos relativamente densos), se utiliza una tabla de salto.

Eso significaría algo así como:

 switch(i) { case 0: doZero(); break; case 1: doOne(); case 2: doTwo(); break; default: doDefault(); } 

Terminaría comstackdo a algo así como (pseudo ensamblador horrible, pero debería estar claro, espero).

 load i into REG compare REG to 2 if greater, jmp to DEFAULT compare REG to 0 if less jmp to DEFAULT jmp to table[REG] data table ZERO ONE TWO end data ZERO: call doZero jmp END ONE: call doOne TWO: call doTwo jmp END DEFAULT: call doDefault END: 

Si ese no es el caso, existen otras posibles implementaciones que permiten, en cierta medida, “mejor que una secuencia de condicionales”.

Cómo se implementa Swtich depende de qué valores tenga. Para valores cercanos, el comstackdor generalmente generará una tabla de salto. Si los valores están muy separados, generará una twig vinculada, usando algo así como una búsqueda binaria para encontrar el valor correcto.

El orden de las instrucciones de cambio como tales no importa, hará lo mismo ya sea que tenga el orden en orden ascendente, descendente o aleatorio: haga lo que tenga más sentido con respecto a lo que desea hacer.

Si nada más, cambiar es generalmente mucho más fácil de leer que una secuencia if-else.

En Google, encontré algunos enlaces interesantes y planeé publicarlos como respuesta a mi pregunta. http://www.codeproject.com/Articles/100473/Something-You-May-Not-Know-About-the-Switch-Statem

Los comentarios son bienvenidos ..