Ich implementiere die gleichzeitige Hash-Map von tbb, um die Performance mit einer Reihe anderer gleichzeitiger Hash-Tabellen zu vergleichen.
Allerdings ist die Leistung, die ich daraus bekomme, entsetzlich, ich kann einfach nicht glauben, dass es so langsam ist im Vergleich zu anderen konkurrierenden Hash-Tabellen
Hier ist meine Implementierung davon:
%Vor%Sieht irgendjemand ein Problem mit meiner Implementierung oder weiß er, warum es langsam läuft? Es dauert mehr als 30 Minuten, um 200.000 Elemente in einer einzelnen Thread-Umgebung einzufügen. Um dies zu relativieren, führen fast alle anderen Tabellen diesen Test in weniger als 5 Minuten durch.
Hier ist mein Build-Code:
%Vor%UPDATE: Ich habe meinen Testcode so angepasst, dass die Hashtabellen auf 1000 statt auf 100.000 vorbefüllt werden. Wenn es erneut ausgeführt wird, führt tbb 92 Op / Sek. Durch, während eine andere Implementierung 89431 Op / Sek. Ausführt. (64-Thread-Umgebung) ... Nur etwas zu sagen, scheint nicht richtig zu sein ....
Zusätzliche Informationen: Computer ist eine HP Z600 Workstation mit 6 GB RAM und 6 Kernen.
Hinweis Cross-Positionierung bei: Ссылка
Sie HashCompare::hash()
gibt sizeof(int)
zurück, was bedeutet, dass jeder Eintrag in den gleichen Bucket mappt. Es sieht so aus, als ob Sie es nicht als Hash-Tabelle verwenden, sondern eher als verkettete Liste.
Sie könnten versuchen, den Hash von Boost zu verwenden:
%Vor%Tags und Links c++ tbb hashmap concurrenthashmap