Информация об изменениях

Сообщение Re[4]: Правильный GetHashCode для сравнения byte[] по значен от 25.12.2016 8:16

Изменено 25.12.2016 8:26 Shmj

Здравствуйте, AndrewVK, Вы писали:

S>>А вот и нет. Операция сравнения работает пока не найдет разные элементы. То есть она редко перебирает все элементы массива. А вот неправильная операция вычисления хеш-кода перебирает элементы массива во всех случаях. По этому вместо ускорения получаем замедление.


AVK>А ничего что сравнивать придется со всем содержимым бакета, пока совпадение не найдется, а не с единственным кандидатом?

AVK>Ну и сравнение это не единственная проблема коллизий. У ConcurrentDictionary, к примеру, коллизия приводит к использованию лока, в то время как без коллизий оно lock free.

Вопрос такой: кто сказал что при использовании всех элементов массива коллизий будет меньше, чем при использовании только 4 байт (берем 2 из начала и 2 из конца массива)?
Re[4]: Правильный GetHashCode для сравнения byte[] по значен
Здравствуйте, AndrewVK, Вы писали:

S>>А вот и нет. Операция сравнения работает пока не найдет разные элементы. То есть она редко перебирает все элементы массива. А вот неправильная операция вычисления хеш-кода перебирает элементы массива во всех случаях. По этому вместо ускорения получаем замедление.


AVK>А ничего что сравнивать придется со всем содержимым бакета, пока совпадение не найдется, а не с единственным кандидатом?

AVK>Ну и сравнение это не единственная проблема коллизий. У ConcurrentDictionary, к примеру, коллизия приводит к использованию лока, в то время как без коллизий оно lock free.

Вопрос такой: кто сказал что при использовании всех элементов массива коллизий будет меньше, чем при использовании только 4 байт (берем 2 из начала и 2 из конца массива или лучше 0, 1/3, 2/3, последний байт)?