Zum Inhalt springen

???Hash-Maps voll langsam und bugbehaftet???


Empfohlene Beiträge

Geschrieben

Wie der Titel schon sagt. Ich hab mal probiert, wie schnell ich eine eigene String-Hashmap hinbekomme und bin WESENTLICH schneller als die CMapStringToString, obwohl ich sogar noch eine Multimap eingebaut habe (bei Tests bis zu 2500x schneller, was mich sehr stutzig gemacht hat). Bei kleinen Umfängen ist sie ordentlich einsetzbar, aber sobald man mal mit über 20000 Einträgen arbeitet, fängt die CMapStringToString mehr und mehr an zu kriechen - quadratisch in der Dauer steigend zum Umfang, obwohl ich sie mit einer festen Hashmap-Größe vorbelege (Ein Blick auf den Speicher hat aber gezeigt, daß sie trotzdem ständig reorganisiert wird)! Immerhin arbeitet sie ansonsten zuverlässig.

Die hash_multimap (std) ist erheblich schneller (wenn auch noch lange nicht so schnell wie meine Hash-Implementierung), aber irgendwie ziemlich empfindlich. Die "normale" Benutzung (über map[Key]=Value; führt komischerweise zu einem sehr seltsamen Verhalten, genauso wie die map.insert(pair(Key,Value)). Nur eine Variante von .find hat funktioniert. Nach einer kleinen Anzahl Einträge wird die Map nicht mehr erweitert und die Funktionsaufrufe landen im Nirvana ohne jegliche Fehlermeldung! Abfragen zeigen dann immer wieder auf den gleichen Wert. (das kann so doch nicht im Sinne des Erfinders sein?)

Ich jedenfalls habe mich entschieden lieber meine Version, die wenigstens ordentlich funktioniert zu nehmen, anstatt die bugbehafteten Standard-Hashmaps.

Meine Frage: Ist es tatsächlich so, daß die Standard-Hash-Klassen einfach extrem mies programmiert sind und ich das nur noch nicht mitbekommen habe?

Geschrieben
Nur eine Variante von .find hat funktioniert.

Kannst du dafür ein Beispiel geben?

Meine Frage: Ist es tatsächlich so, daß die Standard-Hash-Klassen einfach extrem mies programmiert sind und ich das nur noch nicht mitbekommen habe?

Da der Standard nicht vorschreibt, wie die Containerklassen zu implementieren sind, kann man da keine pauschale Antwort geben. Welche STL-Implementierung benutzt du?

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...