#algorytmy

wszystkie notatki oznaczone etykietą "algorytmy"

Proste haszowanie stringa

Haszowanie stringów z wykorzystaniem prostego algorytmu Roberta Sedgwicksa z książki “Algorithms in C”. Według testów różnych prostych algorytmów opublikowanych na stronie Hash Function Efficiency, można zauważyć, że to właśnie RS jest prostym i mało kolizyjnym algorytmem. Dlatego wybrałem go do użycia w swoim projekcie, do haszowania nazw funkcji serwisowych, eventów, hooków. Jego najprostsza implementacja w C++: unsigned int RSHash(char* str) { unsigned int a = 63689; unsigned int b = 378551; unsigned int hash = 0; while (*str) { hash = hash * a + static_cast<unsigned char>(*str); a = a * b; str++; } return hash; } W źródłach mirandy, użyty przez nią algorytm znalazłem w wersji C i Asemblera, więc naszła mnie mała ochota, aby mój algorytm również nieco zoptymalizować i przy okazji przypomnieć sobie bebechy asemblera ;)

Czytaj dalej