TBB Concurrent Hash-Map

8

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: Ссылка

    
Steven Feldman 16.09.2011, 19:20
quelle

1 Antwort

11

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%     
foxcub 16.09.2011, 21:53
quelle

Tags und Links