Optimización de código

Uso del desplazamiento de bits

Utilizar desplazamiento de bits en vez de la multiplicación o división si es posible.

Por ejemplo:

- x >> 2 es equivalente a x / 4 
- x << 10 es equivalente a x * 1024
- 1 << 20 es equivalente a Math.pow(2, 20).


- int num1 = a / 2;     ===    int num1 = a >> 1
- int num2 = a / 4;     ===    int num2 = a >> 2
- int num3 = a / 8;     ===    int num3 = a >> 3
- int num4 = a * 4;     ===    int num4 = a << 2
- int num5 = a * 8;     ===    int num5 = a << 3

Ejemplo incorrecto: Uso de división en desplazamiento de bits

Cuando dividimos por potencias de 2, se puede optimizar usando operadores de desplazamiento de bits (>> y <<).

1public class MultiplicacionVsDivision {
2    void ejemploIncorrecto(int a) {
3        int resultado = a / 8; // División costosa por una potencia de 2
4        System.out.println(resultado);
5    }
6}

Ejemplo optimizado: Uso de desplazamiento de bits

Cuando trabajamos con números enteros, en lugar de dividir por potencias de 2, podemos usar operadores de desplazamiento (>> para división y << para multiplicación).

1public class MultiplicacionVsDivision {
2    void ejemploOptimizado(int a) {
3        int resultado = a >> 3; // Equivalente a dividir por 8
4        System.out.println(resultado);
5    }
6}

Beneficios

  • El operador de desplazamiento es más rápido que la división.
  • La optimización es útil en cálculos de bajo nivel o aplicaciones de alto rendimiento.

Conclusión

Usar multiplicación en lugar de división cuando sea posible mejora la eficiencia del código.
Pre-calcular factores para evitar divisiones en bucles.
Utilizar desplazamiento de bits (>>) en lugar de divisiones por potencias de 2.
Optimizar operaciones matemáticas para reducir el uso de ciclos de CPU.

Siguiendo estas buenas prácticas, logramos un código más rápido, eficiente y fácil de mantener. 🚀