Я не могу использовать boost: hash, потому что я должен придерживаться C и не могу использовать С++.
Но мне нужно хэшировать большое количество (от 10 К до 100 тыс.) строк токенов (от 5 до 40 байтов), чтобы поиск в них был самым быстрым.
MD5, SHA1 или любая длинная хеш-функция кажутся слишком тяжелыми для простой задачи, я не занимаюсь криптографией. Кроме того, стоимость хранения и вычислений.
Поэтому мой вопрос:
-
Какой может быть самый простой алгоритм хэширования, который обеспечит предотвращение столкновений в большинстве практических случаев.
-
Сколько бит используется для хэш-значения? Я разрабатываю 32-битные системы. Использует ли хэш-алгоритм в Perl/Python 32-битные хэши? Или мне нужно перейти на 64?
-
Что касается реализации хэш-таблиц на обычных языках сценариев: проверяет ли реализация на наличие конфликтов или я могу вообще избежать этой части?