2009-07-02 14 views
5

¿Hay implementaciones HashMap que exponen métodos de gancho para perfilar el rendimiento del mapa (longitud de cadena media, mejor/peor/tiempo de acceso medio, #rehashes, etc.).HashMap perfiles

Parece bastante común usar HashMap y "esperar lo mejor" con respecto al tiempo de acceso ~ O (1), sin analizar si este es realmente el caso, pero me gustaría medir el rendimiento en tiempo de ejecución (en menos durante el desarrollo), por lo que cualquier cosa que se enganche en JMX o software de perfiles también sería bueno.

Además, ¿Hay alguien al tanto de las implementaciones HashMap, donde las cadenas se basan en los árboles binarios en lugar de las listas enlazadas?

Gracias de antemano.

Respuesta

4

Hay un nuevo perfilador de Java que va en cierto modo a hacer lo que está buscando. CollectionSpy (www.collectionspy.com) seguimiento del número de refritos internos de cualquier contenedor de hash, y también tiene una visualización gráfica de las longitudes lista de cubo. No (aún) proporciona ninguna información de tiempo.

+0

Gracias - Definitivamente lo verifico. – Adamski

1

TreeMap se basa en un árbol rojo-negro.

Actualización: el cartel está interesado en HashMaps donde las cadenas individuales son árboles binarios.

+0

Que técnicamente no es una implementación de hashmap, pero no queremos ser demasiado pedantes. – skaffman

+1

Gracias pero estoy interesado en HashMaps donde las cadenas individuales son árboles binarios ... es decir, estoy interesado en aproximar O (1) el tiempo de acceso. – Adamski

+0

OK. Dejaré la respuesta (y los comentarios) en su lugar para evitar que otras personas se molesten. –

2

En la segunda parte de su pregunta, si está buscando una implementación rápida de Hashmap con algunas garantías decentes en tiempo real, eche un vistazo a Javolution. Es rápido, confiable y entra en una cantidad decente de detalles sobre el rendimiento.