您好,登錄后才能下訂單哦!
這篇文章主要講解了“PHP Hash算法中的Times33算法實例應用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“PHP Hash算法中的Times33算法實例應用”吧!
最近看書,里面提到了一些Hash算法。比較有印象的是Times33,當時理解不是很透測,今天寫了段程序來驗證了一下。
先上代碼:
復制代碼 代碼如下:
<?php
/**
* CRC32 Hash function
* @param $str
* @return int
*/
function hash42($str)
{
return crc32($str) >> 16 & 0x7FFFFFFF;
}
/**
* Times33 Hash function
* @param $str
* @return int
*/
function hash43($str)
{
$hash = 0;
for($i=0; $i<strlen($str); $i++) {
$hash += 33 * $hash + ord($str{$i});
}
return $hash & 0x7FFFFFFF;
}
$n = 10;
// Test Case 1
$stat = array();
for($i=0; $i<10000; $i++){
$str = substr(md5(microtime(true)), 0, 8);
$p = hash42($str) % $n;
if(isset($stat[$p])){
$stat[$p]++;
}else{
$stat[$p] = 1;
}
}
print_r($stat);
// Test Case 2
$stat = array();
for($i=0; $i<10000; $i++){
$str = substr(md5(microtime(true)), 0, 8);
$p = hash43($str) % $n;
if(isset($stat[$p])){
$stat[$p]++;
}else{
$stat[$p] = 1;
}
}
print_r($stat);
以上有兩個測試用例。第一個,用CRC32的方法;第二個是Times33的算法實現。
效果:
結果分布,兩種算法不相上下
但耗費時間,CRC32比Times33快將近一倍。
感謝各位的閱讀,以上就是“PHP Hash算法中的Times33算法實例應用”的內容了,經過本文的學習后,相信大家對PHP Hash算法中的Times33算法實例應用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。