11 DJBX33A APR雜湊預設演算法

2021-06-17 18:06:40 字數 1091 閱讀 6202

這是很出名的times33雜湊演算法,此演算法被perl語言採用並在berkeley db中出現。它是已知的最好的雜湊演算法之一,在處理以字串為鍵值的雜湊時,有著極快的計算效率和很好雜湊分布。最早提出這個演算法的是dan bernstein,但是源**確實由clris torek在berkeley db出實作的。

我找到的最確切的引文中這樣說:

「chris torek,c語言文字雜湊函式,usenet訊息 <[email protected]> in comp.lang.c ,2023年十月。」

在rich salz於2023年在usenix報上發表的討論inn的文章中提到。這篇文章可以在 /salz92internetnews.html 上找到。

經典是經過了時間考驗的。

apr_declare_nonstd(unsigned int) apr_hashfunc_default( const   char  *char_key, apr_ssize_t *klen)  

*klen = p - key;

} else

} return hash;

}

33這個奇妙的數字,為什麼它能夠比其他數值效果更好呢?無論重要與否,卻從來沒有人能夠充分說明其中的原因。因此在這裡,我來試著解釋一下。如果某人試著測試1到256之間的每個數字,他會發現,沒有哪乙個數字的表現是特別突出的。其中的128個奇數(1除外)的表現都差不多,都能夠達到乙個能接受的雜湊分布,平均分布率大概是86%。

如果比較這128個奇數中的方差值(統計術語,表示隨機變數與它的數學期望之間的平均偏離程度)的話,數字33並不是表現最好的乙個。(這裡按照我的理解,照常理,應該是方差越小穩定,但是由於這裡不清楚作者方差的計算公式,以及在雜湊離散表,是不是離散度越大越好,所以不得而知這裡的表現好是指方差值大還是指方差值小),但是數字33以及其他一些同樣好的數字比如 17,31,63,127和129對於其他剩下的數字,在面對大量的雜湊運算時,仍然有乙個大大的優勢,就是這些數字能夠將乘法用位運算配合加減法來替換,這樣的運算速度會提高。畢竟乙個好的雜湊演算法要求既有好的分布,也要有高的計算速度,能同時達到這兩點的數字很少。

11月3日筆記

1.1 css簡介 css 指層疊樣式表 cascading style sheets 定義如何顯示html元素。1.3 css樣式規則和css載入的方式 1.css樣式規則 css 規則由兩個主要的部分構成 選擇器,以及一條或多條宣告 選擇器通常是您需要改變樣式的 html 元素。每條宣告由乙個屬...

python3 學習筆記(11)

集合 set 是乙個無序的不重複元素序列。可以使用大括號 或者 set 函式建立集合,注意 建立乙個空集合必須用 set 而不是 因為 是用來建立乙個空字典。collection coll set 3565 print coll 重複項被去除了 print collection 集合支援集合推導式 ...

第11周閱讀程式(3)

問題及 檔名稱 zwj.cpp 作 者 張晴晴 完成日期 2016年5月10日 版 本 號 v1.0 問題描述 閱讀程式,寫出執行結果 輸入描述 程式輸出 include using namespace std class a public a char s cout執行結果 學習心得 主函式中定義...