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