• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. 介紹PHP Hash算法

        時(shí)間:2024-10-21 22:26:03 PHP 我要投稿
        • 相關(guān)推薦

        介紹PHP Hash算法

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

          最近看書(shū),里面提到了一些Hash算法。比較有印象的是Times33,當(dāng)時(shí)理解不是很透測(cè),今天寫了段程序來(lái)驗(yàn)證了一下。

          先上代碼:

          復(fù)制代碼 代碼如下:

          /**

          * 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);

          以上有兩個(gè)測(cè)試用例。第一個(gè),用CRC32的方法;第二個(gè)是Times33的算法實(shí)現(xiàn)。

          效果:

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

          但耗費(fèi)時(shí)間,CRC32比Times33快將近一倍。

          為什么是33?

          即是素?cái)?shù)(質(zhì)數(shù)),也是奇數(shù)。除了33,還有131, 1313, 5381等。PHP內(nèi)置的Hash函數(shù)用的是5381,在“鳥(niǎo)哥”的一篇博文中也有提到。

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【介紹PHP Hash算法】相關(guān)文章:

        簡(jiǎn)單介紹php構(gòu)造函數(shù)用法08-31

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

        Smarty (PHP模板引擎)知識(shí)點(diǎn)介紹06-12

        關(guān)于php面試寶典及PHP面試技巧08-16

        簡(jiǎn)單分析PHP中序列化用法介紹08-15

        PHP的壓縮函數(shù)06-21

        php高級(jí)教程01-23

        如何學(xué)好PHP知識(shí)09-20

         PHP的基礎(chǔ)編程與應(yīng)用10-16

        淺析php函數(shù)的實(shí)例06-08

        在线咨询
        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 亚洲日本乱码在线观看 | 亚洲视频在线视频 | 一日本道久久久精品国产 | 在线视频亚洲激情 | 久久久综合色88一本到鬼色 | 性爽爽刺激视频午夜福利757 |

            介紹PHP Hash算法

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

              最近看書(shū),里面提到了一些Hash算法。比較有印象的是Times33,當(dāng)時(shí)理解不是很透測(cè),今天寫了段程序來(lái)驗(yàn)證了一下。

              先上代碼:

              復(fù)制代碼 代碼如下:

              /**

              * 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);

              以上有兩個(gè)測(cè)試用例。第一個(gè),用CRC32的方法;第二個(gè)是Times33的算法實(shí)現(xiàn)。

              效果:

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

              但耗費(fèi)時(shí)間,CRC32比Times33快將近一倍。

              為什么是33?

              即是素?cái)?shù)(質(zhì)數(shù)),也是奇數(shù)。除了33,還有131, 1313, 5381等。PHP內(nèi)置的Hash函數(shù)用的是5381,在“鳥(niǎo)哥”的一篇博文中也有提到。