亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 邏輯算法 > 正文

php-perl哈希算法實現(times33哈希算法)

2020-03-22 20:29:26
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:
APR_DECLARE_NONSTD(unsigned int) apr_hashfunc_default(const char *char_key,
apr_ssize_t *klen)
{
unsigned int hash = 0;
const unsigned char *key = (const unsigned char *)char_key;
const unsigned char *p;
apr_ssize_t i;

/*
* This is the popular `times 33' hash algorithm which is used by
* perl and also appears in Berkeley DB. This is one of the best
* known hash functions for strings because it is both computed
* very fast and distributes very well.
*
* The originator may be Dan Bernstein but the code in Berkeley DB
* cites Chris Torek as the source. The best citation I have found
* is "Chris Torek, Hash function for text in C, Usenet message
* 27038@mimsy.umd.edu in comp.lang.c , October, 1990." in Rich
* Salz's USENIX 1992 paper about INN which can be found at
* .
*
* The magic of number 33, i.e. why it works better than many other
* constants, prime or not, has never been adequately explained by
* anyone. So I try an explanation: if one experimentally tests all
* multipliers between 1 and 256 (as I did while writing a low-level
* data structure library some time ago) one detects that even
* numbers are not useable at all. The remaining 128 odd numbers
* (except for the number 1) work more or less all equally well.
* They all distribute in an acceptable way and this way fill a hash
* table with an average percent of approx. 86%.
*
* If one compares the chi^2 html' target='_blank'>values of the variants (see
* Bob Jenkins ``Hashing Frequently Asked Questions'' at
* http://burtleburtle.net/bob/hash/hashfaq.html for a description
* of chi^2), the number 33 not even has the best value. But the
* number 33 and a few other equally good numbers like 17, 31, 63,
* 127 and 129 have nevertheless a great advantage to the remaining
* numbers in the large set of possible multipliers: their multiply
* operation can be replaced by a faster operation based on just one
* shift plus either a single addition or subtraction operation. And
* because a hash function has to both distribute good _and_ has to
* be very fast to compute, those few numbers should be preferred.
*
* -- Ralf S. Engelschall
*/

if (*klen == APR_HASH_KEY_STRING) {
for (p = key; *p; p++) {
hash = hash * 33 + *p;
}
*klen = p - key;
}
else {
for (p = key, i = *klen; i; i--, p++) {
hash = hash * 33 + *p;
}
}
return hash;
}
函數注釋部分的翻譯: 這是很出名的times33哈希算法,此算法被perl語言采用并在Berkeley DB中出現.它是已知的最好的哈希算法之一,在處理以字符串為鍵值的哈希時,有著極快的計算效率和很好哈希分布.最早提出這個算法的是Dan Bernstein,但是源代碼確實由Clris Torek在Berkeley DB出實作的.我找到的最確切的引文中這樣說”Chris Torek,C語言文本哈希函數,Usenet消息 27038@mimsy.umd.edu in comp.lang.c ,1990年十月.”在Rich Salz于1992年在USENIX報上發表的討論INN的文章中提到.這篇文章可以在上找到. 33這個奇妙的數字,為什么它能夠比其他數值效果更好呢?無論重要與否,卻從來沒有人能夠充分說明其中的原因.因此在這里,我來試著解釋一下.如果某人試著測試1到256之間的每個數字(就像我前段時間寫的一個底層數據結構庫那樣),他會發現,沒有哪一個數字的表現是特別突出的.其中的128個奇數(1除外)的表現都差不多,都能夠達到一個能接受的哈希分布,平均分布率大概是86%. 如果比較這128個奇數中的方差值(gibbon:統計術語,表示隨機變量與它的數學期望之間的平均偏離程度)的話(見Bob Jenkins的 哈希常見疑問 http://burtleburtle.net/bob/hash/hashfaq.html,中對平方差的描述),數字33并不是表現最好的一個.(gibbon:這里按照我的理解,照常理,應該是方差越小穩定,但是由于這里不清楚作者方差的計算公式,以及在哈希離散表,是不是離散度越大越好,所以不得而知這里的表現好是指方差值大還是指方差值小),但是數字33以及其他一些同樣好的數字比如 17,31,63,127和129對于其他剩下的數字,在面對大量的哈希運算時,仍然有一個大大的優勢,就是這些數字能夠將乘法用位運算配合加減法來替換,這樣的運算速度會提高.畢竟一個好的哈希算法要求既有好的分布,也要有高的計算速度,能同時達到這兩點的數字很少.PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久99久国产精品黄毛片入口| 久操成人在线视频| 国产亚洲欧洲在线| 欧美色videos| 欧洲一区二区视频| 欧美电影院免费观看| 亚洲欧美国产精品久久久久久久| 狠狠躁夜夜躁人人爽天天天天97| 国产视频丨精品|在线观看| 亚洲影院在线看| 日韩福利在线播放| 亚洲国产成人精品久久久国产成人一区| 色哟哟亚洲精品一区二区| 国产女精品视频网站免费| 中文字幕日韩视频| 91精品视频在线看| 色婷婷综合久久久久| 欧美激情视频给我| 91欧美精品午夜性色福利在线| 亚洲天堂第一页| 国产精品欧美日韩久久| 91久久在线播放| 日韩欧美在线中文字幕| 国产精品手机播放| 国产香蕉一区二区三区在线视频| 亚洲人成免费电影| 欧美成人精品xxx| 久久香蕉频线观| 精品无码久久久久久国产| 久久精品99国产精品酒店日本| 精品久久久久久国产91| 亚洲第一精品夜夜躁人人躁| 一个色综合导航| 色妞在线综合亚洲欧美| 中日韩美女免费视频网站在线观看| 久久久av亚洲男天堂| 国产精品夜色7777狼人| 亚洲精品中文字| 亚洲自拍欧美色图| 日韩中文字幕在线视频| 久久精品国产久精国产一老狼| 91精品综合久久久久久五月天| 在线激情影院一区| 欧美一区亚洲一区| 欧美成人久久久| 精品无人区乱码1区2区3区在线| 亚洲娇小xxxx欧美娇小| 国产91九色视频| 国产一区二区三区免费视频| 日韩电影在线观看中文字幕| 国产精品电影一区| 欧美视频13p| 国产日产欧美精品| 欧美成aaa人片免费看| 日韩电影中文字幕av| 中文字幕欧美日韩| 亚洲欧美精品中文字幕在线| 77777少妇光屁股久久一区| 国产精品www网站| 国产日产久久高清欧美一区| 国产精品成人免费电影| 亚洲国产一区二区三区四区| 欧美另类在线观看| 国产精品高清免费在线观看| 久久99精品视频一区97| 国产精品嫩草视频| 日本久久精品视频| 日韩免费在线视频| 成人a在线视频| 中文字幕亚洲二区| 97久久精品视频| 亚洲男人第一av网站| 国产一区二区三区视频在线观看| 日本不卡高字幕在线2019| 黄色一区二区三区| 日本视频久久久| 亚洲男人的天堂在线播放| 国产欧美日韩中文字幕| 国产一区二区在线免费视频| 久久久精品中文字幕| 91在线观看免费网站| 色综合影院在线| 国产男人精品视频| 亚洲国产99精品国自产| 日日骚久久av| 91福利视频在线观看| 亚洲国产精品va在线| 亚洲第一免费播放区| 成人国产在线激情| 亚洲激情视频网站| 色av中文字幕一区| 2019中文字幕免费视频| 国产男人精品视频| 青草热久免费精品视频| 九九久久综合网站| 国产在线视频2019最新视频| 欧美日韩性生活视频| 狠狠操狠狠色综合网| 欧美日韩色婷婷| 日韩av成人在线观看| 91精品视频在线| 日本精品久久久久久久| 91超碰caoporn97人人| 色综合天天狠天天透天天伊人| 尤物九九久久国产精品的特点| 91久久精品国产| 欧美丰满片xxx777| 久久艹在线视频| 国产欧美va欧美va香蕉在线| 久久精品91久久香蕉加勒比| 欧美中文在线观看| 亚洲日韩欧美视频一区| 亚洲社区在线观看| 久久久视频精品| 日韩hd视频在线观看| 国产亚洲精品久久久久久牛牛| 欧美极品少妇xxxxⅹ免费视频| 亚洲电影第1页| 亚洲激情电影中文字幕| 精品国内亚洲在观看18黄| 国产一区二区三区中文| 亚洲成色www8888| 亚洲黄色www| 中文字幕成人精品久久不卡| 欧美激情第6页| 午夜精品一区二区三区在线| 黄色精品在线看| 97精品国产97久久久久久免费| 亚洲视频在线观看视频| 亚洲国产精品网站| 黑人狂躁日本妞一区二区三区| 亚洲天堂av在线免费观看| 高跟丝袜欧美一区| 国产aⅴ夜夜欢一区二区三区| 国产日韩在线看| 亚洲欧美视频在线| 久久久久国产视频| 久久精视频免费在线久久完整在线看| 亚洲免费一级电影| 色综合久久悠悠| 亚洲午夜性刺激影院| 欧美日韩性视频在线| 亚洲在线免费视频| 在线精品国产欧美| 精品免费在线视频| 国产视频精品xxxx| 亚洲女同性videos| 亚洲男人的天堂网站| 宅男66日本亚洲欧美视频| 日本乱人伦a精品| 亚洲第一福利在线观看| 91久久精品国产91久久性色| 国内精品视频一区| 日韩国产激情在线| 日本久久久久久久| 亚洲欧美成人一区二区在线电影| 亚洲欧洲在线免费| 国产精品一区二区久久国产| 亚洲石原莉奈一区二区在线观看| 国产不卡视频在线| 亚洲偷欧美偷国内偷| 亚洲男人天堂九九视频| 中文字幕日韩精品在线| 欧美性视频在线|