The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск библиотеки хэш-функций Fast Positive Hash 2.0.1"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск библиотеки хэш-функций Fast Positive Hash 2.0.1"  +1 +/
Сообщение от opennews (??), 06-Апр-18, 19:08 
Состоялся новый выпуск библиотеки libt1ha, которая предоставляет быстрые некриптографические хеш-функции с несколькими уровнями качества хеширования, точнее говоря с различным балансом скорость/качество. По планам разработки, примерно раз в год библиотека пополняется функциями со следующим «уровнем качества» и/или для нацеленных на различные применения. Код проекта поставляется под свободной лицензией Zlib.

В конце марта этого года в libt1ha было добавлено несколько функций с очередным (вторым) уровнем качества хеширования. Новые функции обеспечивают соблюдение критерия строго лавинного эффекта во всех случаях, затрачивая на обработку лишь на пару тактов процессора больше. Также теперь доступны 128-битные некриптографические дайджесты (цифровые отпечатки).

Все функции libt1ha проходят все проверки в хорошо зарекомендовавшем себя наборе тестов SMHasher. А обнаруженные Yves Orton отклонения от строгого лавинного эффекта в хеш-функциях первого уровня качества крайне малозначительны при использовании этих функций по их назначению.

Кроме добавления новых функций, в сборке libt1ha теперь доступен тест производительности, реализующий замеры с точностью до тактов процессора на большинстве современных платформ. В том числе сравнение с одной из самых быстрых переносимых хеш-функций xxhash.

Следует отметить, что результаты могут существенно отличаться в зависимости от компилятора и аппаратной платформы. Однако, усредняя доступные результаты можно сделать вывод, что t1ha является семейством самых быстрых переносимых хеш-функций при выполнении на всех современных 64-битных процессорах (Elbrus, x86_64, ARM64, MIPS64).

Пользуясь случаем, хотелось бы пригласить заинтересованных разработчиков в тестировании и доработке кода реализующего прецизионный замер выполнения коротких функций на широком спектре аппаратных платформ. После ожидаемых доработок и стабилизации этот механизм планируется выделить в отдельную открытую библиотеку. Более подробно о семействе t1ha можно узнать из осенней статьи на «Хабре», а в мае ожидается доклад автора на конференции «Positive Hack Days».

В качестве примера ниже протокол выполнения на x86_64 Intel i7-6700K при использовании компилятора clang 5.0:


Preparing to benchmarking...
- running on CPU#0
- use RDPMC_40000001 as clock source for benchmarking
- assume it cheap and stable
- measure granularity and overhead: 54 cycle, 0.0185185 iteration/cycle

Bench for tiny keys (5 bytes):
t1ha2_atonce            :     13.070 cycle/hash,  2.614 cycle/byte,  0.383 byte/cycle,  1.148 Gb/s @3GHz
t1ha2_atonce128*        :     29.984 cycle/hash,  5.997 cycle/byte,  0.167 byte/cycle,  0.500 Gb/s @3GHz
t1ha2_stream*           :     79.062 cycle/hash, 15.812 cycle/byte,  0.063 byte/cycle,  0.190 Gb/s @3GHz
t1ha2_stream128*        :     99.750 cycle/hash, 19.950 cycle/byte,  0.050 byte/cycle,  0.150 Gb/s @3GHz
t1ha1_64le              :     14.055 cycle/hash,  2.811 cycle/byte,  0.356 byte/cycle,  1.067 Gb/s @3GHz
t1ha0                   :     14.070 cycle/hash,  2.814 cycle/byte,  0.355 byte/cycle,  1.066 Gb/s @3GHz
xxhash32                :     16.000 cycle/hash,  3.200 cycle/byte,  0.312 byte/cycle,  0.938 Gb/s @3GHz
xxhash64                :     17.203 cycle/hash,  3.441 cycle/byte,  0.291 byte/cycle,  0.872 Gb/s @3GHz

Bench for medium keys (1024 bytes):
t1ha2_atonce            :    266.000 cycle/hash,  0.260 cycle/byte,  3.850 byte/cycle, 11.549 Gb/s @3GHz
t1ha2_atonce128*        :    266.144 cycle/hash,  0.260 cycle/byte,  3.848 byte/cycle, 11.543 Gb/s @3GHz
t1ha2_stream*           :    300.750 cycle/hash,  0.294 cycle/byte,  3.405 byte/cycle, 10.214 Gb/s @3GHz
t1ha2_stream128*        :    307.000 cycle/hash,  0.300 cycle/byte,  3.336 byte/cycle, 10.007 Gb/s @3GHz
t1ha1_64le              :    245.875 cycle/hash,  0.240 cycle/byte,  4.165 byte/cycle, 12.494 Gb/s @3GHz
t1ha0                   :     86.375 cycle/hash,  0.084 cycle/byte, 11.855 byte/cycle, 35.566 Gb/s @3GHz
xxhash32                :    524.250 cycle/hash,  0.512 cycle/byte,  1.953 byte/cycle,  5.860 Gb/s @3GHz
xxhash64                :    282.750 cycle/hash,  0.276 cycle/byte,  3.622 byte/cycle, 10.865 Gb/s @3GHz

URL: https://github.com/PositiveTechnologies/t1ha/releases/tag/v2...
Новость: https://www.opennet.dev/opennews/art.shtml?num=48403

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


18. "Выпуск библиотеки хэш-функций Fast Positive Hash 2.0.1"  +/
Сообщение от Аноним (-), 09-Апр-18, 20:37 
Леонид, а почему Вы ушли с предыдущего места работы?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

19. "Выпуск библиотеки хэш-функций Fast Positive Hash 2.0.1"  +/
Сообщение от Аноним (-), 09-Апр-18, 20:55 
Тоже интересно. Про оба. И про ПС и про МФ
Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

20. "Выпуск библиотеки хэш-функций Fast Positive Hash 2.0.1"  +/
Сообщение от Леонид Юрьевemail (?), 10-Апр-18, 00:47 
На всякий повторю - ответов на оффтопики тут больше мне будет.
Таковы правила.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

21. "Выпуск библиотеки хэш-функций Fast Positive Hash 2.0.1"  +2 +/
Сообщение от qsdg (ok), 10-Апр-18, 19:49 
Нету сравнения с industry standard хэшами: CRC-32 хотя бы.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

23. "Нету сравнения с industry standard хэшами: CRC-32 хотя бы."  +/
Сообщение от Леонид Юрьевemail (?), 12-Апр-18, 14:34 
> Нету сравнения с industry standard хэшами: CRC-32 хотя бы.

Для краткости можно повторить: быстрее, выше (качество), сильнее (стойкость).
Хотя всё это очевидно из контекста.

Более подробную информацию в тексте новости я приводить не стал, ибо её просто много. По ссылкам, как на сайте проекта, так и в хабра-статье, несложно выйти на одну из сравнительных таблиц с результатами. Например https://github.com/rurban/smhasher/blob/master/README.md.

Если сравнить именно с CRC32, то:
1) CRC32 это не хеш-функция, а именно CRC, поэтому с точки зрения качества хеширования у CRC32 масса изъянов.
2) CRC32 выдает 32-битный результат, а у t1ha результат 64-битный или 128-битный.
3) О какой-либо стойкости CRC32 говорить не приходится.
4) без аппаратной акселерации (например SSE4.2 на x86_64) CRC32 многократно медленнее t1ha.
5) на x86_64 с использованием инструкций SSE4.2, на больших блоках данных, CRC32 примерно вдвое быстрее переносимого варианта t1ha, но до двух раз медленнее варианта t1ha с использованием инструкций AES-NI.

--

На всякий, также повторю - сейчас в t1ha нет криптографических хеш-функций, поэтому о "стойкости" говорить можно только с оговорками. Нем не менее, во всех вариантах t1ha есть 64-битный salt/seed, поэтому "зачатков стойкости" намного больше, чем в большинстве других быстрых хеш-функций.

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

24. "Выпуск библиотеки хэш-функций Fast Positive Hash 2.0.1"  +/
Сообщение от Алексей Турбин (?), 08-Авг-18, 12:23 
А если я хеширую 8 байт с помощью t1ha, то хеш получится биективным?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру