es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Se puede anular una función de un objeto de tipo genérico?

Tengo una clase en Java que almacena tipos genéricos de Object en un HashMap:

private final Map packetMarker = new WeakHashMap<>();

El objeto packet es muy grande y el mapa tiene un rendimiento muy alto, por lo que el proceso de hash de los paquetes consume una cantidad absurda de ciclos de CPU, y me preguntaba si es posible minimizar esto o si simplemente necesito mejor hardware.

¿Habría alguna forma de anular, a pesar de que sea una clase Object genérica sin envoltorio, la función hashCode para que sea más eficiente, o quizás extender el hashmap para mejorar el método #get()? ¿O algún otro método que esté pasando por alto?

¡Saludos!

EDIT para aclaración: El objeto packet no tiene un tipo definido. Es del tipo Object. Se pasa desde una fuente externa, por lo que no puedo asignarle un tipo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como el objeto packet es del tipo Object, no hay una implementación específica para el método hashCode() para él. Sin embargo, puedes crear una clase envoltorio para el objeto packet y anular el método hashCode() para que sea más eficiente.

    Otra opción es crear una implementación personalizada de la clase HashMap que utilice un algoritmo de hash personalizado, en lugar de depender de la implementación predeterminada en Java. Este enfoque requeriría más esfuerzo y experiencia en la implementación correcta del algoritmo, pero podría proporcionar un mejor rendimiento.

    Finalmente, también puede ser útil evaluar el hardware utilizado para ejecutar la aplicación y considerar actualizaciones u optimizaciones que puedan mejorar el rendimiento.

Comments are closed.