Saltar al contenido

Rendimiento de la declaración HashMap vs Switch

Pudiera darse el caso de que halles algún error con tu código o trabajo, recuerda probar siempre en un ambiente de testing antes añadir el código al trabajo final.

Solución:

La respuesta aceptada es incorrecta aquí.

http://java-rendimiento.info/string-cambiar-implementación/

Los cambios siempre serán tan rápidos como si no más rápidos que los mapas hash. Las declaraciones de cambio se transforman en tablas de búsqueda directa. En el caso de valores enteros (ints, enums, shorts, longs) es una búsqueda directa/jmp a la declaración. No hay hash adicional que deba suceder. En el caso de un String, precalcula el string hash para las declaraciones del caso y utiliza el código hash de la cadena de entrada para determinar dónde saltar. En caso de colisión, hace una cadena if/else. Ahora podrías pensar “Esto es lo mismo que HashMap, ¿verdad?” pero eso no es true. El código hash para la búsqueda se calcula en tiempo de compilación y no se reduce según la cantidad de elementos (menor probabilidad de colisión).

Los interruptores tienen búsqueda O(1), no O(n). (Ok, en verdad, para una pequeña cantidad de elementos, los interruptores se convierten en declaraciones if/else. Esto proporciona una mejor localidad de código y evita búsquedas de memoria adicionales. Sin embargo, para muchos elementos, los interruptores se cambian a la tabla de búsqueda que mencioné anteriormente).

Puede leer más sobre esto aquí. ¿Cómo funciona el interruptor de Java bajo el capó?

Eso depende:

  1. Si hay algunos artículos | artículos fijos. Usando el interruptor si puedes (en el peor de los casos O(n))

  2. Si hay muchos elementos O desea agregar elementos futuros sin modificar mucho el código —> Usar hash-map (el tiempo de acceso se considera un tiempo constante)

  3. Para tu caso. No debe preocuparse por el rendimiento porque el tiempo de ejecución diferente es muy pequeño. Solo concéntrese en la legibilidad/mantenibilidad de su código. ¿Vale la pena optimizar un caso simple para mejorar unos nanosegundos?

Si te ha resultado provechoso este artículo, agradeceríamos que lo compartas con el resto seniors de esta manera contrubuyes a extender este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *