72 lines
4.3 KiB
Markdown
72 lines
4.3 KiB
Markdown
# 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
|
|
|
|
[коды](https://altlinux.space/arseny/atsv-research) от Арсения для наглядности происходящего
|
|
|
|
some funny [msg's](https://lists.pld-linux.org/mailman/pipermail/pld-devel-en/2013-November/012467.html)
|
|
|
|
по коду неоднократно раскидано `bpp < 10 || bpp > 32` проверки
|
|
|
|
запись `char = [1,0]` мне не нравится.
|
|
|
|
про "отрицательные значения = код ошибки" встречается в многих местах, стоит вынести отдельно
|
|
проверить кодом примеры, особенно base62
|
|
|
|
кэш вечно копируется и переносится, немного странно
|
|
PIVOT_SIZE странный
|
|
|
|
прыжки IFLT8 и IFLT4 я бы возможно делал как c1/c2
|
|
|
|
учитывая оптимизации, возможно стоит самостоятельно менять массивы местами до начала всех операций (но проблема с кэшем возможна)
|
|
|
|
хочу себе день, чтобы переписать это всё на English
|