2009-07-02 13 views
5

Esistono implementazioni HashMap che espongono metodi di hook per profilare le prestazioni della mappa (lunghezza catena media, tempo di accesso migliore/peggiore/medio, #rehashes, ecc.).Profilazione HashMap

Sembra abbastanza comune utilizzare HashMap e "sperare per il meglio" per quanto riguarda ~ O (1) tempo di accesso, senza analizzare se questo è davvero il caso, ma mi piacerebbe misurare le prestazioni in fase di esecuzione (a almeno durante lo sviluppo), quindi tutto ciò che si collega a JMX o al software di profilazione sarebbe anche buono.

Inoltre, qualcuno è a conoscenza delle implementazioni di HashMap in cui le catene si basano su alberi binari anziché elenchi concatenati?

Grazie in anticipo.

risposta

4

C'è un nuovo profiler Java che va in qualche modo verso quello che stai cercando. CollectionSpy (www.collectionspy.com) tiene traccia del numero di rehash interni di qualsiasi contenitore di hashing e ha anche una visualizzazione grafica delle lunghezze dell'elenco di bucket. Non (ancora) fornisce comunque informazioni sui tempi.

+0

Grazie - lo controllerò sicuramente. – Adamski

1

TreeMap si basa su un albero rosso-nero.

Aggiornamento: il manifesto è interessato a HashMaps in cui le singole catene sono alberi binari.

+0

Che tecnicamente non è un'implementazione di hashmap, ma non vorremmo diventare troppo pedanti. – skaffman

+1

Grazie, ma sono interessante in HashMaps in cui le singole catene sono alberi binari ... cioè mi interessa approssimare il tempo di accesso O (1). – Adamski

+0

OK. Lascerò la risposta (e i commenti) sul posto per salvare il disturbo agli altri. –

2

Nella seconda parte della domanda, se stai cercando un'implementazione Hashmap veloce con alcune garanzie decenti in tempo reale, consulta Javolution. È veloce, affidabile e offre una buona quantità di dettagli sulle prestazioni.