Files
ARSV/Docs/more/for_me.md
T

4.3 KiB

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

additional about set:version.md

коды от Арсения для наглядности происходящего

some funny msg's

по коду неоднократно раскидано bpp < 10 || bpp > 32 проверки

запись char = [1,0] мне не нравится.

про "отрицательные значения = код ошибки" встречается в многих местах, стоит вынести отдельно проверить кодом примеры, особенно base62

кэш вечно копируется и переносится, немного странно PIVOT_SIZE странный

прыжки IFLT8 и IFLT4 я бы возможно делал как c1/c2

учитывая оптимизации, возможно стоит самостоятельно менять массивы местами до начала всех операций (но проблема с кэшем возможна)

хочу себе день, чтобы переписать это всё на English