TGViewer
Rust Rust @rust_lib · 2.24K subscribers
Post #120 1.79K
Самая маленькая хеш-таблица в мире

1 декабря я в очередной раз поучаствовал в Advent of Code, написав программу на Rust. Если интересно — код можно найти на GitHub. Тут мне хотелось бы рассказать о моём решении задачи, предлагавшейся во 2 день мероприятия, так как это решение, с одной стороны, сверх всякой меры оптимизировано, а с другой — демонстрирует кое-какие полезные приёмы. Чтобы не усложнять себе жизнь — мы рассмотрим лишь первую часть задачи, но те же приёмы можно применить и к её второй части.

Мы начнём входить в курс дела не спеша, но я предлагаю вам не отклоняться от заданного мной курса, так как, после того, как вы полностью прочтёте этот материал, у вас должно появиться понимание того, что именно делает следующая функция, как она работает, как такую функцию написать, и того, почему это — самая маленькая в мире хеш-таблица:

pub fn phf_shift(x: u32) -> u8 {
let shift = x.wrapping_mul(0xa463293e) >> 27;
((0x824a1847u32 >> shift) & 0b11111) as u8
}


Rus https://habr.com/ru/companies/wunderfund/articles/723536/

Eng https://orlp.net/blog/worlds-smallest-hash-table/


👉 @rust_lib
  • 👍 4
More from @rust_lib
  1. Sep 30, 2026🚫 Убиваем if: Branchless Programming Самый быстрый if - это отсутствие if. Иногда можно з…
  2. Sep 24, 2026🥶 Холодный расчет: #[cold] и likely Компилятор Rust (LLVM) очень умный, но иногда мы знае…
  3. Sep 21, 2026🔮 Ты не пройдешь: Магия предсказателя ветвлений Вы когда-нибудь задумывались, почему обра…
  4. Sep 17, 2026🗝 Турбируем HashMap Стандартный std::collections::HashMap в Rust использует алгоритм хэши…
  5. Sep 16, 2026⚡️ Забудь про RefCell для примитивов Вам нужно изменить поле внутри неизменяемой структуры…
  6. Sep 15, 2026Создание кроссплатформенного приложения с GUI на Rust: От идеи до реальности Electron-прил…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →