Показать сообщение отдельно
Старый 26.09.2016, 09:54   #13
DEEP_MIND
Super Moderator
 
Аватар для DEEP_MIND
 
Регистрация: 30.05.2016
Сообщений: 737
Сказал(а) спасибо: 66
Поблагодарили 1,171 раз(а) в 575 сообщениях
Репутация: 47
По умолчанию Re: Рекомендации по оптимальным настройкам программ и движков

Цитата: Сообщение от Estet
Однако ввиду каких-то особенностей машинных вычислений компьютер всё равно де-факто будет использовать хэш с размером «два в периоде»).
это со времен DOS-вских движков пошло.
а почему так? а вот почему: размер хэша напрямую участвует в форуме расчета адреса ячейки этого самого хэша. т.е. чтобы движку вытащить (или записать) в память данные о позиции, он берет хэш-число этой позиции и размер хэш памяти, и вычисляет адрес ячейки, откуда и берет (записывает) данные.
так вот в старых движках этот код был написан так, что вычисления кратные степени два работали прилично быстрей, поэтому движок и "причесывал" размер хэша, который выставлялся в оболочке. но еще с времен фруктов и прочих фрицев код расчета был сделан по другому и движку по барабану на кратность.

пример из Стрелки:
entry = trans_entry + (KEY_INDEX & trans_mask);

вместо размера таблицы используется переменная trans_mask которая инициализируется в момент создания таблицы.
DEEP_MIND вне форума   Ответить с цитированием
7 пользователя(ей) сказали cпасибо:
Alexandr_L (24.03.2018), Chess762 (31.10.2016), Estet (30.09.2016), GRF (11.12.2016), tt66 (26.09.2016), Гудвин (26.09.2016), Кевин (27.09.2016)