ermouth: (ang)
ermouth ([personal profile] ermouth) wrote2012-12-31 05:45 am
Entry tags:

Быстрый javascript hash

Мне тут понадобилась простая хэш-функция с хорошим распределением и кратно более шустрая, чем 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 уникальных вхождений.


Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting