Ein bizarres Problem. Ich schmeisse knapp 500.000 Element in eine HashMap. Die HashMap wurde mit einer initialen Kapazität von 500.000 erzeugt. Das Einfügen - inklusive parsen einer XML-Datei - dauert auf dem Mac ca. 9.200ms. Auf einem vergleichbaren Linux-System ca. 8.000ms. Soweit, so gut.
Bizarr wird es bei Abfragen. 100 look ups auf dem Mac werden in 99ms abgearbeitet - wiederholbar. Auf dem Linux-System sind es immer mehr als 21.000ms. Egal, ob ich Beas JRockit verwende, das JDK von Sun oder das JDK von IBM. Ob 5. oder 6. JDK ist ebenfalls unerheblich. Der Prozess hat genug Hauptspeicher (1,5 GB) und lagert nicht auf Platte aus - der JIT kann wunderbar optimieren. Wird eine TreeMap an Stelle der HashMap verwendet, tritt das gleiche Phänomen auf.
Im Augenblick sitze ich mit grossen Augen vor dem Problem und weiss nicht weiter.
Nachtrag: Die Beschreibung oben ist nicht korrekt. Ich rufe die HashMap nicht direkt auf, sondern über eine Groovy Methode. Dieser Methodenaufruf frisst die Zeit. Es ist nicht die Implementierung der HashMap. Deren look up Zeit ist im Millisekundenbereich nicht messbar. Soweit also mein Fehler. Jetzt gilt es heraus zu finden, wie ich den Groovy-Teil beschleunigen kann und ob dies überhaupt geht. Grund: der Aufruf erfolgt über einen sun.reflect.GeneratedMethodAccessor. Erschüttert bin ich darüber, dass Apples Implementierung soviel besser ist.
Nachtrag 2: Ich habe das Problem jetzt ziemlich dreckig gelöst. Das Feld der HashMap habe ich public gemacht und greife jetzt direkt darauf zu.
Die DKP Landtagsabgeordnete in Niedersachsen - Christel Wegner - hat gemeint, dass für den Aufbau einer neuen Staatsform soetwas wie die Stasi wie eingeführt werden müsse. Weil man sich auch davor schützen muss, dass andere Kräfte, reaktionäre Kräfte, die Gelegenheit nutzen und so einen Staat von innen aufweichen.
Damit hat sie sich in der eigenen Linken Rhetorik verfangen - heillos.
Hehlerei (Deutschland)
Bildung einer kriminellen Vereinigung (Liechtenstein)
