LINUX.ORG.RU

История изменений

Исправление 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/