Перейти к содержимому

EfficientHashing

лучший алгоритм хеширования для Vec3i и BlockPos

FabricNeoForgeForge
Загрузчики
FabricNeoForgeForge
Скачиваний на Modrinth
299 тыс.
Подписчиков на Modrinth
16
версии
32
Обновлён
8 октября 20268 окт.
Опубликован
в 2025

Коротко о моде

Работает на Fabric, NeoForge и Forge
Для Minecraft 1.21–1.21.1, 26.1.2 …
Нужен и в игре, и на сервере
Последняя версия — 1.0.2 от 8 октября 2026
Лицензия LGPL-3.0-only — бесплатно
Где нужен
В игреобязателенНа сервереобязателен

Нужен и в игре, и на сервере

Версии игры1.18–1.20.1, 1.21–1.21.1, 26.1.2
Описание переведено автоматическиПоказать оригинал (EN)

EfficientHashing

EfficientHashing заменяет алгоритм хеширования Vec3i (и его подклассов, таких как BlockPos) на гораздо более устойчивый к коллизиям, что даёт прирост производительности практически везде, где используется его хеш-код.

Устойчивость к коллизиям

Это можно доказать простым тестом. Тест выполняется путём хеширования каждой комбинации BlockPos между new BlockPos(-100, -20, -100) и new BlockPos(100, 50, 100) (включительно), при общем количестве объектов, достигающем 2 800 000+.

Ванильный алгоритм выдал всего 194 571 уникальный хеш-код. Это означает, что как минимум 93% всех хеш-кодов BlockPos конфликтуют друг с другом.

А PhiMix, алгоритм, используемый EfficientHashing, выдал 2 868 471 уникальный хеш-код. Это означает, что каждый уникальный объект BlockPos получает свой уникальный хеш-код, и НИ ОДИН из всех хеш-кодов BlockPos не конфликтует.

Уникальный хеш-кодКоллизииЧастота коллизий
Vanilla194,5712,673,90093.2%
EfficientHashing2,868,47100%

Если вам интересен сам код теста, смотрите: здесь

Производительность

Время бенчмарка:

Benchmark                     Mode  Cnt   Score   Error  Units
VecHashingBenchmark.mixin    thrpt    5  47.012 ± 1.029  ops/s
VecHashingBenchmark.vanilla  thrpt    5  49.326 ± 1.507  ops/s

PhiMix показывает около 95.3% производительности оригинального алгоритма хеширования. Да, он медленнее, но этот разрыв в производительности относительно невелик по сравнению с другими решениями для хеширования, и его легко перекрывает значительное улучшение устойчивости к коллизиям хешей.

Если вам интересен сам код бенчмарка, смотрите: здесь

Совместимость с ваниллой

В ванильном алгоритме хеширования, если вы хешируете "стандартный" экземпляр BlockPos/Vec3i, то есть new BlockPos(0, 0, 0), полученный хеш-код будет равен 0, что совпадает со "стандартным" значением целого числа. Это особое поведение также присутствует в PhiMix, обеспечивая наилучшую возможную совместимость с ваниллой.

Частые вопросы

Как установить EfficientHashing?

Установите Fabric под свою версию Minecraft, скачайте EfficientHashing под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть EfficientHashing?

У EfficientHashing есть сборки для Minecraft 1.18–1.20.1, 1.21–1.21.1, 26.1.2.

Нужен ли EfficientHashing на сервере?

Нужен и в игре, и на сервере

Лицензия и источник
GNU Lesser General Public License v3.0 onlyможно использовать и распространять; изменённые версии — под той же лицензией и с исходным кодом
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее