В таблице ниже приведены результаты различных хэшей.
функции, описанные выше, для трех наборов данных:
1) Все слова и фразы с записями в Merriam-Webster's
2-й международный словарь без сокращений (311 141 строка, средняя длина 10 символов).
2) Все строки в / bin / , / usr / bin / , / usr / lib / , / usr / ucb /
и / usr / openwin / bin / * (66 304 строки, средняя длина 21 символ).
3) Список URL-адресов, собранных веб-сканером, который работал в течение нескольких
вчера вечером (28 372 строки, средняя длина 49 символов).
Показатель производительности, показанный в таблице, представляет собой «средний размер цепи»
по всем элементам в хеш-таблице (т. е. ожидаемое значение
количество ключей сравнивается для поиска элемента).
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
Глядя на эту таблицу, видно, что все функции, кроме
текущая функция Java и две сломанные версии Weinberger's
Функция предлагает отличную, почти неотличимую производительность. я
твердо предположить, что это представление по сути
«теоретический идеал», который вы получили бы, если бы использовали реальный случайный
генератор чисел вместо хеш-функции.
Я бы исключил функцию WAIS, так как ее спецификация содержит страницы случайных чисел, и ее производительность не лучше, чем у любого из
гораздо более простые функции. Любая из оставшихся шести функций выглядит как
отличный выбор, но мы должны выбрать один. Я полагаю, я исключаю
Вариант Во и функция Вайнбергера из-за их добавления
сложность, хотя и незначительная. Из оставшихся четырех я бы, наверное, выбрал
P (31), так как это самый дешевый способ расчета на RISC-машине (потому что 31
разница двух степеней двух). P (33) также дешево
рассчитать, но это производительность незначительно хуже, а 33
композит, который заставляет меня немного нервничать.
Josh