Я использую хеш-таблицу (объект слова DotNET) как часть разреженного двумерного набора данных. Большинство записей в хэш-таблице будут близко друг к другу. Вероятно, у меня будет 100 ~ 10 000 записей, все они сгруппированы около нуля. Я прочитал, что таблица хэшей лучше работает, когда хеши распространяются по всему целочисленному (32-битовому) диапазону.Сопоставление целых чисел во всем диапазоне
Есть ли дешевый способ сопоставить последовательные целые числа на совершенно разные значения в режиме 1: 1? Мне не нужно отображать их обратно, это чисто односторонняя вещь.
Прежде всего, настоящий убийца производительности не является проблемой при использовании словаря. Настоящий убийца - это когда вы закончите таблицу, в которой несколько объектов имеют один и тот же ключ, но это не вариант со словарем. Более того, это не значит, что ваши объекты разбросаны по любому произвольному набору ключей. набор, подобный 1,2,3,4, потенциально будет использовать меньше memmory, чем 1 1024 1089999 2^32-1 –
Чтобы улучшить производительность словаря в .NET, вам необходимо сбалансировать скорость и скорость хэширования. Чтобы иметь идеальный хеш без столкновения, он будет более трудоемким. Аналогично, самый быстрый алгоритм хэширования будет иметь больше коллизий. Нахождение баланса - это ключ, и в этом отношении команда BCL хорошо провела бы свою надежную работу, поэтому просто полагайтесь на нее, если у вас нет проблем с производительностью. – nawfal