<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>

            介紹PHP Hash算法

            時間:2024-10-21 22:26:03 PHP 我要投稿
            • 相關推薦

            介紹PHP Hash算法

              這篇文章主要介紹了PHP Hash算法:Times33算法代碼實例,本文直接給出實現代碼,需要的朋友可以參考下

              最近看書,里面提到了一些Hash算法。比較有印象的是Times33,當時理解不是很透測,今天寫了段程序來驗證了一下。

              先上代碼:

              復制代碼 代碼如下:

              /**

              * CRC32 Hash function

              * @param $str

              * @return int

              */

              function hash32($str)

              {

              return crc32($str) >> 16 & 0x7FFFFFFF;

              }

              /**

              * Times33 Hash function

              * @param $str

              * @return int

              */

              function hash33($str)

              {

              $hash = 0;

              for($i=0; $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 = hash32($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 = hash33($str) % $n;

              if(isset($stat[$p])){

              $stat[$p]++;

              }else{

              $stat[$p] = 1;

              }

              }

              print_r($stat);

              以上有兩個測試用例。第一個,用CRC32的方法;第二個是Times33的算法實現。

              效果:

              結果分布,兩種算法不相上下(估計是數據源的問題,md5只有0-f)。也有文章說CRC32的分布更均勻(參考鏈接:)

              但耗費時間,CRC32比Times33快將近一倍。

              為什么是33?

              即是素數(質數),也是奇數。除了33,還有131, 1313, 5381等。PHP內置的Hash函數用的是5381,在“鳥哥”的一篇博文中也有提到。

            【介紹PHP Hash算法】相關文章:

            簡單介紹php構造函數用法08-31

            精選php面試自我介紹范文14篇08-29

            Smarty (PHP模板引擎)知識點介紹06-12

            關于php面試寶典及PHP面試技巧08-16

            簡單分析PHP中序列化用法介紹08-15

            PHP的壓縮函數06-21

            php高級教程01-23

            如何學好PHP知識09-20

             PHP的基礎編程與應用10-16

            淺析php函數的實例06-08

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看