Poniższa tabela podsumowuje działanie różnych funkcji skrótu opisanych powyżej dla trzech zestawów danych:
1) Wszystkie słowa i frazy z wpisami w 2. Int'l nienauczonym słowniku Merriam-Webster (311 141 ciągów, średnia długość 10 znaków).
2) Wszystkie ciągi znaków w / bin / , / usr / bin / , / usr / lib / , / usr / ucb /
i / usr / openwin / bin / * (66 304 ciągów, średnia długość 21 znaków).
3) Lista adresów URL zebranych przez robota sieciowego, który działał przez kilka godzin zeszłej nocy (28 372 ciągów, średnia długość 49 znaków).
Metryka wydajności pokazana w tabeli jest „średnim rozmiarem łańcucha” dla wszystkich elementów w tablicy skrótów (tj. Oczekiwana wartość liczby kluczy w porównaniu do wyszukania elementu).
Webster's Code Strings URLs
--------- ------------ ----
Current Java Fn. 1.2509 1.2738 13.2560
P(37) [Java] 1.2508 1.2481 1.2454
P(65599) [Aho et al] 1.2490 1.2510 1.2450
P(31) [K+R] 1.2500 1.2488 1.2425
P(33) [Torek] 1.2500 1.2500 1.2453
Vo's Fn 1.2487 1.2471 1.2462
WAIS Fn 1.2497 1.2519 1.2452
Weinberger's Fn(MatPak) 6.5169 7.2142 30.6864
Weinberger's Fn(24) 1.3222 1.2791 1.9732
Weinberger's Fn(28) 1.2530 1.2506 1.2439
Patrząc na tę tabelę, jasne jest, że wszystkie funkcje oprócz bieżącej funkcji Java i dwóch uszkodzonych wersji funkcji Weinbergera oferują doskonałą, prawie nie do odróżnienia wydajność. Mocno przypuszczam, że ta wydajność jest w gruncie rzeczy „ideałem teoretycznym”, który uzyskałbyś, gdybyś użył prawdziwego generatora liczb losowych zamiast funkcji skrótu.
Wykluczę funkcję WAIS, ponieważ jej specyfikacja zawiera strony liczb losowych, a jej wydajność nie jest lepsza niż żadna z znacznie prostszych funkcji. Każda z pozostałych sześciu funkcji wydaje się być doskonałym wyborem, ale musimy wybrać jedną. Przypuszczam, że wykluczyłbym wariant Vo i funkcję Weinbergera ze względu na ich dodatkową złożoność, choć niewielką. Z pozostałych czterech prawdopodobnie wybrałbym P (31), ponieważ jest to najtańszy kalkulator na maszynie RISC (ponieważ 31 jest różnicą dwóch potęg dwóch). P (33) jest podobnie tani do obliczenia, ale jego wydajność jest nieznacznie gorsza, a 33 jest złożony, co mnie trochę denerwuje.
Josh