Cambiar y, si no, comparación

if-else
es simplemente comparar uno por uno; if ... else se calcula para cada condición;

El conmutador
utiliza el algoritmo del árbol binario; en la mayoría de los casos, el conmutador será más rápido, a menos que la primera condición de if-else sea verdadera. Compilar el conmutador es diferente de compilar if ... else ... No importa cuántos casos haya, salte directamente, no es necesario comparar consultas una por una; el interruptor solo calcula el valor una vez, y luego todas las pruebas, jmp,

Cuando hay muchos más si, es más claro usar la caja del interruptor. La forma en que el conmutador usa la tabla de búsqueda determina que la condición del caso debe ser una constante continua. El if-else puede ser mucho más flexible. Para la declaración de cambio, la estructura de bifurcación se implementa realmente usando una tabla de salto, y no hay necesidad de comparar cada condición requerida a la vez. El número de comparaciones es 1. Pero para la declaración if ... else: el número mínimo de comparaciones es 1, en comparación con el cambio, en términos de tiempo, la velocidad de ejecución de la declaración del cambio es más rápida que si fuera otra cosa, pero el espacio ocupado por la ejecución del programa En términos de aspectos, la declaración de cambio necesita una tabla de salto para mantener. Este salto, la esencia de la tabla es una matriz con etiquetas, requiere espacio de almacenamiento adicional, la eficiencia de espacio de la declaración if else es mejor. Switch es un ejemplo muy típico de espacio para el tiempo. Sin embargo, el conmutador solo puede juzgar los datos de un valor especificado, pero no puede juzgar los datos en un rango. En este momento, si ... otra declaración es una buena opción.


El problema de eficiencia de la caja del interruptor y, si no

La diferencia entre switch case y if else: switch case generará una tabla de salto para indicar la dirección de la rama del caso real, pero si ... else necesita atravesar la rama condicional hasta que llegue a la condición.


Cambie las ventajas y desventajas de la carcasa

(1) Las ventajas de la caja del interruptor:

Cuando hay muchas ramas, la eficiencia del uso del interruptor es muy alta. Debido a que el interruptor determina el valor seleccionado y salta directamente a esa rama en particular.

(2) Desventajas de la caja del interruptor:

1.switch ... case ocupa más espacio de código porque genera tablas de salto, especialmente cuando el rango de distribución constante de case es grande pero el valor efectivo real es relativamente pequeño, la utilización de espacio de switch ... case será Se vuelve muy bajo.

2.switch ... case solo puede manejar el caso donde el caso es una constante.


Ventajas y desventajas de si más

(1) Las ventajas de if else: si else se puede aplicar a más lugares, if else es más flexible.

(2) Desventajas de if else: if else debe atravesar todos los valores posibles.

Resumen:
En la elección de muchas ramas, interruptor de uso ... estructura de la caja va a mejorar la eficiencia del programa, pero la falta de lugares que sólo pueden manejar caracteres interruptor o variable numérica del tipo, si ... estructura demás es más
además de ser flexible, si ... estructura más puede ser utilizado Para determinar si la expresión es verdadera, como if (a + b> c), if ... else tiene un rango de aplicación más amplio, switch ... la estructura de casos puede reemplazar if ... else en algunos casos.

 

Supongo que te gusta

Origin www.cnblogs.com/ranyonsue/p/12744066.html
Recomendado
Clasificación