История изменений
Исправление ly, (текущая версия) :
Рискну назваться экспертом и дать ссылки по делу.
Под определение подходит CityHash от Google, для начала см. http://habrahabr.ru/post/117360/. По многим сценариям использования и для многих актуальных архитектур/семейств процессоров это чемпион по скорости, но не на коротких данных.
Если хочется/требуется заморочиться больше, то можно выбрать более быстрые/оптимальные варианты:
- для коротких данных.
- менее устойчивые к некоторым видам «атак», т.е. выдающие сильную (относительно) корреляцию между hash-значениями при определенных (хитрожопых) различиях в исходных данных.
- для больших данных с использованием MMX/SSE/AVX и прочих SIMD.
Ну и раз такая гулянка, то не могу не показать свой «велосипед» https://gist.github.com/leo-yuriev/7bf20f02f3ad76c35f0d. На коротких данных он выгоднее CityHash, а на длинных медленнее, но чуть лучше с коллизиями и корреляциями.
Из совсем простого, но эффективного см. rot13, ly и rs на http://vak.ru/doku.php/proj/hash/efficiency
А для тестирования, пожалуй https://code.google.com/p/smhasher/
Исправление ly, :
Рискну назваться экспертом и дать ссылки по делу.
Под определение подходит CityHash от Google, для начала см. http://habrahabr.ru/post/117360/. По многим сценариям использования и для многих актуальных архитектур/семейств процессоров это чемпион по скорости, но не на коротких данных.
Если хочется/требуется заморочиться больше, то можно выбрать более быстрые/оптимальные варианты:
- для коротких данных.
- менее устойчивые к некоторым видам «атак», т.е. выдающие сильную (относительно) корреляцию между hash-значениями при определенных (хитрожопых) различиях в исходных данных.
- для больших данных с использованием MMX/SSE/AVX и прочих SIMD.
Ну и раз такая гулянка, то не могу не показать свой «велосипед» https://gist.github.com/leo-yuriev/7bf20f02f3ad76c35f0d
Из совсем простого, но эффективного см. rot13, ly и rs на http://vak.ru/doku.php/proj/hash/efficiency
А для тестирования, пожалуй https://code.google.com/p/smhasher/
Исходная версия ly, :
Рискну назваться экспертом и дать ссылки по делу.
Под определение подходит CityHash от Google, для начала см. http://habrahabr.ru/post/117360/. По многим сценариям использования и для многих актуальных архитектур/семейств процессоров это чемпион по скорости, но не на коротких данных.
Если хочется/требуется заморочиться больше, то можно выбрать более быстрые/оптимальные варианты:
- для коротких данных.
- менее устойчивые к некоторым видам «атак», т.е. выдающие сильную корреляцию между hash-значениями при определенных (хитрожопых) различиях в исходных данных.
- для больших данных с использованием MMX/SSE/AVX и прочих SIMD.
Ну и раз такая гулянка, то не могу не показать свой «велосипед» https://gist.github.com/leo-yuriev/7bf20f02f3ad76c35f0d
Из совсем простого, но эффективного см. rot13, ly и rs на http://vak.ru/doku.php/proj/hash/efficiency
А для тестирования, пожалуй https://code.google.com/p/smhasher/