hashCode

Eigentlich will ich in diesem Blog keine Computerprogrammierzeugs posten, jedoch ist mir heute so was geiles untergekommen und ich hab nur dieses Blog. ;-)

Ich zitier hier mal die Java-API Doku von der Klasse java.lang.Object was bei der Method hashCode steht:
"Returns a hash code value for the object. This method is supported for the benefit of hashtables such as those provided by java.util.Hashtable."

Ok, Hashtable, d.h. grosse Datenstruktur, soll schnell was gefunden werden. Also sollte die hashCode Methode einen guten hashCode liefern, aber
auch schnell sein, denn sonst wäre ja die ganze Hashtable fürn Hugo.
Na gut. Heute hab beim Kunden ein Profiling von einer Software gemacht, weil diese auf der einen Umgebung sehr schnell gelaufen ist und auf der
anderen extrem langsam. Da bin ich draufgekommen das mehr als 80% der Rechenzeit die Methode hashCode von der Klasse java.net.URL verbraucht.
Der Grund (haltet euch fest!): die hashCode Methode von java.net.URL macht einen DNS-Lookup(!!!), und wenn wie im konkreten Fall die URL einen
ungültigen Hostname enthält und dann vom DNS ein Timeout kommt, dann ist das Ding saulangsam.