# Notes ## to read https://www.altlinux.org/Features/Specific ## Hash в данный момент используется Jenkins OAAT. Считается чуть устаревшим(check), главным аналогом является: https://github.com/cyan4973/xxhash xxHash64 (XXH64): относительно простая имплементация на си, хвалят за скорость, 64 бит, параллель необходимы тесты и графики: 1. насколько быстрее/медленнее 2. коллизии на наборе букв в сравнении с рандомными данными 3. коллизии у первого и второго хэшей между собой > В XXH3 внутренний цикл, который оптимально обрабатывается векторизацией. Благодаря этому функция использует аппаратную поддержку на наборах инструкций SSE2, AVX2 и NEON. Производительность зависит от комилятора. Неожиданно оказалось, что версия, скомпилированная clang, намного превосходит остальные. Ян Колле даже подумал, что производительность хеш-функции здесь превысит пропускную способность памяти. Этой версии на графике соответствует пунктирная линия. есть ещё cityhash от гугла, но она c++ в случае XXH64 строк кода ~200, можно вставить в файл в случае XXH3 строк кода ~2к, стоит использовать библиотеку напрямую, бессмысленно ## about collizions > А вы пробовали побитовую вероятностную карту строить? > Есть у нас по условию множество из входных значений, которые замапились в N хешей (включая коллизии!). Эти N хешей имеют одинаковый размер и, по сути, являются массивами из K бит. > Так вот можно среди этих хешей посчитать 0 и посчитать 1, получится K распределений. Чем они все ближе к пополамному ± 6%, тем лучше. > https://raw.altlinux.team/arseny/snippets/2026-06/QSIrJSuwxp.txt > https://raw.altlinux.team/arseny/snippets/2026-06/QSIrJSuwxp.c ## free free не делает очистку самой структуры, valgrind ## data алфавит для символ библиотек: ``` .0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz ``` - предоставленные/определенные символы из библиотек обычно используют @@VERSION - обязательные/неопределенные символы из двоичных файлов обычно используют @VERSION