2008-10-07 19 views
9

Czy znasz dobre i darmowe implementacje Hashtable dla Delphi 5?Implementacja Hashtable dla Delphi 5

Potrzebuję zorganizować ogromną ilość danych w trybie przyspieszonym i jestem nieco zaniepokojony problemami z wyciekami pamięci, które znalazłem w większości dostępnych implementacji w Internecie.

TKS

Odpowiedz

10

Możesz również sprawdzić wersję open-source/dawniej komercyjną TurboPower SysTools. Nie wiesz, ile jest aktualizowany. W pewnym momencie Julian Bucknall polecił go swoim EZDSL library, choć było to z powrotem, gdy nadal pracował w futrze TurboPower i był utrzymywany/aktualizowany.

+1

Właściwie Turbo-Powers LockBox jest prawdopodobnie tym, czego chce, najnowsza wersja jest aktualizowana pod adresem http://www.songbeamer.com/delphi/ – skamradt

+2

LockBox wykonuje kryptograficzne hashing - SysTools i EZDSL do hashtables, które są strukturą danych. –

1

Można spróbować wyszukiwanie w Koders.
Here masz prostą implementację (Winjab project) lub this z JCL.

UWAGA: Przed użyciem należy zapoznać się z licencją kodów.

3

EZDSL to biblioteka struktur danych, w tym tablica skrótów, napisana przez Juliana Bucknalla z TurboPower i DevExpress ... Nie korzystałem z nich, ale miałbym wysokie oczekiwania co do kodu tego gościa.

http://www.boyet.com/FixedArticles/EZDSL.html

+0

Używam EZDSL od lat z aplikacjami pakowanymi termicznie i kod jest bardzo dobry. Dobra wydajność, brak obaw związanych z wyciekami pamięci. –

3

Można spróbować swoich GpStringHash. Gwarantowane brak wycieków pamięci, ale działa tylko z ciągami. I think powinien działać w D5.

0

Peter Poniżej właśnie opublikował przeróbkę czegoś, co zrobił dla grup new Embarcadero w miejscach publicznych. Jest coś pod jego profilem na stronie CodeGear pod adresem http://cc.codegear.com/Item/24825, która ją opisuje.

0

Zamówienie DeCAL, które zawiera tabele mieszania i więcej struktur danych.

0

Oprócz rzeczywistej implementacji tablicy skrótów ważna jest również funkcja hashująca.

Dobra jest funkcja skrótu od Boba Jenkinsa, read his paper here.

Algorytm ten został ostatnio udoskonalony w przypadkach, w których wejście ma rozmiar DWORD (See the C-version of it here). Ta wersja jest szybsza i daje dwie 32-bitowe wartości mieszania zamiast jednej. (Ta druga wartość hash może być użyta do przyspieszenia wyboru pojemnika, na przykład.)

Dla zainteresowanych, mogę wkleić tłumaczenie Delphi tutaj? (To około 170 linii kodu.)

0

RBS Antidot to bardzo dobra biblioteka kontenerów (w tym hash UnsortedMap).