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

首頁 > 開發 > PHP > 正文

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

2024-05-04 23:20:11
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:


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 values of the variants (see
     * Bob Jenkins ``Hashing Frequently Asked Questions'' at
     * 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的<哈希常見疑問>,中對平方差的描述),數字33并不是表現最好的一個.(gibbon:這里按照我的理解,照常理,應該是方差越小穩定,但是由于這里不清楚作者方差的計算公式,以及在哈希離散表,是不是離散度越大越好,所以不得而知這里的表現好是指方差值大還是指方差值小),但是數字33以及其他一些同樣好的數字比如 17,31,63,127和129對于其他剩下的數字,在面對大量的哈希運算時,仍然有一個大大的優勢,就是這些數字能夠將乘法用位運算配合加減法來替換,這樣的運算速度會提高.畢竟一個好的哈希算法要求既有好的分布,也要有高的計算速度,能同時達到這兩點的數字很少.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97在线免费视频| 国产精品美女主播| 久久久久亚洲精品| 超碰91人人草人人干| 日本a级片电影一区二区| 富二代精品短视频| 在线色欧美三级视频| 亚洲成人精品av| 日韩精品在线视频观看| 黄色91在线观看| www.欧美精品| 久久久久久久久久久久av| 久久人91精品久久久久久不卡| 欧美激情精品在线| 日日骚久久av| 久久久久中文字幕| 亚洲免费福利视频| 国产亚洲欧美一区| 18一19gay欧美视频网站| 精品久久久999| 国产精品影院在线观看| 羞羞色国产精品| 亚洲高清色综合| 97在线看免费观看视频在线观看| 精品久久久91| 粉嫩av一区二区三区免费野| 日韩av网站导航| 日韩免费在线观看视频| 国语自产精品视频在线看| 欧美极品少妇与黑人| 欧美极度另类性三渗透| 亚洲一区二区久久久| 日韩在线观看免费全| 成人精品视频99在线观看免费| 性夜试看影院91社区| 91欧美精品成人综合在线观看| 欧美一级电影免费在线观看| 美女精品视频一区| 欧美亚洲在线播放| 国产欧美日韩精品丝袜高跟鞋| 国产视频精品久久久| 国产精品444| 国产亚洲视频中文字幕视频| 中文字幕一精品亚洲无线一区| 欧美日本在线视频中文字字幕| 亚洲美女视频网站| 欧美午夜美女看片| 欧美性高跟鞋xxxxhd| 久久久免费观看视频| 亚洲午夜精品视频| 亚洲片在线资源| 欧美日韩成人在线视频| 亚洲精品综合精品自拍| 亚洲国产高潮在线观看| 成人xvideos免费视频| 国产精品久久99久久| 欧美日韩另类视频| 日韩av大片免费看| 久久网福利资源网站| 亚洲黄色成人网| 欧美黑人巨大精品一区二区| 欧美亚洲日本网站| 精品国产一区二区三区久久狼5月| 精品视频久久久久久| 久久视频中文字幕| 国产精品444| 国产日韩综合一区二区性色av| 国产成人精品免高潮在线观看| 性欧美激情精品| www高清在线视频日韩欧美| 亚洲91av视频| 欧美中文字幕视频在线观看| 欧美激情乱人伦一区| 亚洲欧美另类中文字幕| 97国产精品视频人人做人人爱| 亚洲偷欧美偷国内偷| 国产成人涩涩涩视频在线观看| 日韩精品小视频| 成人黄色av免费在线观看| 综合欧美国产视频二区| 日韩欧美一区二区三区久久| 国产丝袜视频一区| 中文字幕日韩视频| 国产成人精品电影久久久| 亚洲国产天堂久久国产91| 国产91精品黑色丝袜高跟鞋| 欧美精品在线免费播放| 91免费版网站入口| 国产精品96久久久久久又黄又硬| 91精品国产91久久久| 日韩欧美在线一区| 午夜欧美不卡精品aaaaa| 久久久综合av| 久久视频精品在线| 91精品国产777在线观看| 成人亲热视频网站| 久久国产精品99国产精| 国产精品av电影| 欧美性猛交xxxx富婆| 成人激情视频在线观看| 综合激情国产一区| 欧美肥婆姓交大片| 亚洲国语精品自产拍在线观看| 97国产在线观看| 日韩精品久久久久| 久久久成人精品视频| 国产精品大片wwwwww| 国产91精品青草社区| 国产一区二区久久精品| 欧美激情免费在线| 最近中文字幕2019免费| 久久久999精品| 国产精品中文字幕在线观看| 日韩美女视频在线观看| 久久久999精品视频| 国内精品久久久久影院优| 国产精品免费视频xxxx| 国产一区二区免费| 欧美激情一区二区三区成人| 在线国产精品播放| 97视频在线观看亚洲| 精品中文字幕在线| 国产精品白丝jk喷水视频一区| 国产精品视频导航| 久久69精品久久久久久久电影好| 欧美国产日韩一区二区三区| 久久香蕉国产线看观看av| 亚洲夜晚福利在线观看| 国产精品扒开腿爽爽爽视频| 亚洲精品日韩激情在线电影| 久久人人爽人人爽人人片av高请| 久久国产一区二区三区| 久久免费福利视频| 中文日韩在线视频| 精品久久国产精品| 久久久久久12| 一区二区在线视频| 精品国产欧美一区二区三区成人| 亚洲美女精品成人在线视频| 欧美高清视频在线播放| wwwwwwww亚洲| 成人在线国产精品| 日韩欧美一区二区三区| 8x海外华人永久免费日韩内陆视频| 国产精品高清网站| 亚洲电影免费观看高清完整版| 欧美精品18videos性欧美| 亚洲精品福利免费在线观看| 成人乱人伦精品视频在线观看| 亚洲 日韩 国产第一| 韩日精品中文字幕| 国产一区二区三区直播精品电影| 亚洲欧美日韩中文视频| 97在线视频观看| 亚洲国产精品大全| 欧美在线亚洲在线| 欧美小视频在线观看| 国产日韩欧美日韩| 国产精品自拍视频| 中国china体内裑精亚洲片| 久热精品视频在线观看| 成人黄色网免费| 日韩极品精品视频免费观看| 欧美成人中文字幕|