Я упомяну другой сценарий, в котором летучие вещества важны.
Предположим, вы отображаете в памяти файл для более быстрого ввода-вывода, и этот файл может измениться за кулисами (например, файл не находится на вашем локальном жестком диске, а вместо этого обслуживается по сети другим компьютером).
Если вы обращаетесь к данным отображенного в памяти файла через указатели на энергонезависимые объекты (на уровне исходного кода), то код, сгенерированный компилятором, может извлекать одни и те же данные несколько раз, даже если вы об этом не знаете.
Если эти данные изменятся, ваша программа может использовать две или более разных версий данных и перейти в несовместимое состояние. Это может привести не только к логически некорректному поведению программы, но и к уязвимым местам в ней, если она обрабатывает ненадежные файлы или файлы из ненадежных местоположений.
Если вы заботитесь о безопасности, и вам следует, это важный сценарий для рассмотрения.
Умножение на 31 выполняется быстро, потому что JIT может преобразовать его в сдвиг влево на 5 бит и вычитание:
x * 31 == (x << 5) - x
Без какой-либо дополнительной информации я бы придерживался этого подходить. Это достаточно быстро и, вероятно, в конечном итоге будет иметь достаточно хорошо распределенные хэш-коды, и это также легко сделать правильно :)
Размер набора данных на самом деле не имеет значения, но если у вас есть конкретная дополнительная информация о значениях, которые вы Если вы будете работать (например, «всегда даже»), то вы можете разработать лучшую хеш-функцию. Я бы сначала подождал, пока это не станет реальной проблемой :)
Буду придерживаться этого подхода. Это достаточно быстро и, вероятно, в конечном итоге будет иметь достаточно хорошо распределенные хэш-коды, и это также легко сделать правильно :)Размер набора данных на самом деле не имеет значения, но если у вас есть конкретная дополнительная информация о значениях, которые вы Если вы будете работать (например, «всегда даже»), то вы можете разработать лучшую хеш-функцию. Я бы сначала подождал, пока это не станет реальной проблемой :)
Буду придерживаться этого подхода. Это достаточно быстро и, вероятно, в конечном итоге будет иметь достаточно хорошо распределенные хэш-коды, и это также легко сделать правильно :)Размер набора данных на самом деле не имеет значения, но если у вас есть конкретная дополнительная информация о значениях, которые вы Если вы будете работать (например, «всегда даже»), то вы можете разработать лучшую хеш-функцию. Я бы сначала подождал, пока это не станет реальной проблемой :)
) тогда вы можете разработать лучшую хэш-функцию. Я бы сначала подождал, пока это не станет реальной проблемой :) ) тогда вы можете разработать лучшую хэш-функцию. Я бы сначала подождал, пока это не станет реальной проблемой :)