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?

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...