Быстрый javascript hash
Dec. 31st, 2012 05:45 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Мне тут понадобилась простая хэш-функция с хорошим распределением и кратно более шустрая, чем md5, который я обычно использовал.
Найдено в BerkeleyDB, называется sdbm. Быстрее самых быстрых md5 реализаций для js в 8 примерно раз. На вход принимает не только строки, но и объекты-массивы там – чуток подправлено для js.
function sdbmCode(s0){ for (var s=JSON.stringify(s0),hash=0,i=0;i<s.length;i++) hash=s.charCodeAt(i)+(hash<<6)+(hash<<16)-hash; return (1e11+hash).toString(36); }
Последний пост в этом году )
UPD. Даёт довольно много коллизий. 6 коллизий на словаре английских слов 213000 уникальных вхождений.