Я не могу использовать boost: hash, потому что я должен придерживаться C и не могу использовать C++.Минимальная хэш-функция для C?
Но мне нужно хэшировать большое количество (10K до 100k) строк токенов (от 5 до 40 байтов), чтобы поиск в них был самым быстрым.
MD5, SHA1 или любая длинная функция хэша кажется слишком тяжелой для простой задачи, я не занимаюсь криптографией. Кроме того, стоимость хранения и вычислений.
Поэтому мой вопрос:
Что может быть простейший алгоритм хеширования, который будет обеспечивать предотвращение столкновений в большинстве практических случаев.
Сколько бит используется для хэш-значения? Я разрабатываю 32-битные системы. Использует ли хэш-алгоритм в Perl/Python 32-битные хэши? Или мне нужно прыгать до 64?
Что касается реализации хеш-таблиц на обычных языках сценариев: выполняется ли проверка выполнения для коллизий или я могу вообще избежать этой части?
Следующая страница имеет несколько реализаций общего назначения хэш-функций, реализованных в C (и во многих других языках): http://partow.net/ programming/hashfunctions/index.html – 2010-10-31 23:06:24
Вы считали, что используете GLib? https://developer.gnome.org/glib/2.46/glib-Hash-Tables.html –