Abstract: Benchmark program for hash tables and comparison of 15 popular hash functions. Created 16Â years ago by Peter Kankowski Last changed 4Â years ago Contributors: Nils, Ace, Won, Andrew M., and Georgi 'Sanmayce' Filed under Algorithms Hash tables are popular data structures for storing key-value pairs. A hash function is used to map the key value (usually a string) to array index. The functio
CodeZineç·¨éé¨ã§ã¯ãç¾å ´ã§æ´»èºãããããããã¼ãã¹ã¿ã¼ã«ããããã®ã«ã³ãã¡ã¬ã³ã¹ãDevelopers Summitãããã¨ã³ã¸ãã¢ã®çããã¾ããã¼ã¹ãããããã®ã¤ãã³ããDevelopers Boostããªã©ããã¾ãã¾ãªã«ã³ãã¡ã¬ã³ã¹ãä¼ç»ã»éå¶ãã¦ãã¾ãã
å½¢æ ç´ ã®é »åº¦ãã«ã¦ã³ãããã¨ããã·ã³ãã«ãªã¿ã¹ã¯ã§ std::tr1::unordered_map ã®æ§è½ã«ã¤ãã¦å®é¨ãã¦ã¿ã¾ããï¼std::string ãã const char * ã®æ¹ãã¡ã¢ãªãç¯ç´ã§ããã¨ãããããªè»½ãå 容ã§ãï¼ å®é¨æ¦è¦ å®é¨ç°å¢ã¯ä»¥ä¸ã®ã¨ããã§ãï¼ å®é¨ç°å¢ CPUï¼Core 2 Duo U9600 1.60GHz ã³ã³ãã¤ã©ï¼gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) å ¥åã¨ãã¦ä½¿ç¨ããã®ã¯ï¼ã¦ã§ãã³ã¼ãã¹ããæ½åºããå½¢æ ç´ ãæ¹è¡åºåãã§ä¿åãããã¡ã¤ã«ã§ãï¼ å ¥å ãµã¤ãºï¼815,793,701 bytes å½¢æ ç´ æ°ï¼133,940,786 ç°ãªãæ°ï¼516,612 å½¢æ ç´ ã®å ¥åã«ã¤ãã¦ã¯ï¼std::ios::sync_with_stdio(false) ãå¼ã³åºããå¾ã§ std::getline() ã使ãããã«ã
ä»åã¯å°ãã¿ã®mikioã§ããkey/valueã®ã¬ã³ã¼ããé«éã«æ ¼ç´ã»åç §ã»åé¤ããä»çµã¿ãé£æ³é åã¨ããããã¨ãå¼ã°ãã¦è¦ªãã¾ãã¦ãã¾ãããTokyo Cabinetã®ãªã³ã¡ã¢ãªãããã®æ§è½ãC++ã®å種å®è£ ã¨æ¯è¼ãã¦ã¿ã¾ããã 以ä¸ã®å®è£ ã対象ã¨ãã¦ã100ä¸ã¬ã³ã¼ãã®æ ¼ç´ã¨æ¤ç´¢ã«ãããæéãè¨æ¸¬ãã¾ãããã¼ã¨å¤ã¯å8ãã¤ãã®æååã¨ãã¾ãã Tokyo Cabientã®ãªã³ã¡ã¢ãªãããï¼TCMAPï¼ STLï¼C++ã®æ¨æºãã³ãã¬ã¼ãã©ã¤ãã©ãªï¼ã®mapã¨multi mapã¨set GNUæ¡å¼µãã³ãã¬ã¼ãã®ããã·ã¥ããã Googleã®dense hashããã³sparse hash ãã¹ãã³ã¼ãã¯ãã¡ãã«æãã¦ããã¾ããå ·ä½çãªæä½ã¨ãã¦ã¯ãããããªãã¸ã§ã¯ããçæãããã±ããé åã®è¦ç´ æ°ãã¬ã³ã¼ãæ°ã¨åãã«ãã¥ã¼ãã³ã°ããã«ã¼ããåãã¦ã¬ã³ã¼ã群ãæ ¼ç´ãã¾ãããªããSTLã®ããã
ã¨ããããHashãä½ã§ãããã¨ããã©ãããä½ãã«ãªã£ã¦ãããã¨ãããããããã¨ã¯æ¢ç¥ã¨ããããªã¹ãã®é åã£ã¦ãã¨ããâããã§ä½è¨ã£ã¦ããåãããªããã¾ããã«ã¯ãã®æç« ã¯ã¡ãã£ã¨ã¯ãããå ã«ãã¼ã¿æ§é ã®æç§æ¸ãèªããã¨ãããããã以ä¸ã§ã¯Hashã«ç»é²ããããã¼ã¨ãã¼ã¿ã®ãã¢ã®ãã¨ãentryã¨å¼ã³ããªã¹ãã®é åã¨è¨ã£ãã¨ãã®ãªã¹ãã®ã»ããbinãé åã®ã»ããbucketã¨å¼ã¶ãã¤ã¾ãã
1.ããã·ã¥ã¸å¤ãä»£å ¥ ããã·ã¥å¤æ°ã¯ãé åã®ã¤ã³ããã¯ã¹ãæååã¨ãªã£ããã®ã§ããã®ã¤ã³ããã¯ã¹ãããã¼ãã¨å¼ã³ã¾ããããã·ã¥ã®å ´åã¯è¦ç´ ã®å¤ããã¼ã«ãã£ã¦ç®¡çããã¾ãã ããã·ã¥ã®å®£è¨ ããã·ã¥ã¸å¤ãä»£å ¥ ããã·ã¥ã®å®£è¨ ããã·ã¥ã宣è¨ããã¨ãã¯å¤æ°åã®åã«ãã¼ã»ã³ãï¼ % ï¼ãä»ãã¾ãã %hash; ããã·ã¥ã¸å¤ãä»£å ¥ é åã§ã¯ã[ ] ã§ã¤ã³ããã¯ã¹ãå²ã¿ã¾ããããããã·ã¥ã¯ã { }ã§ãã¼ãå²ã¿ã¾ããä¾ãã°ç¤¾å¡ã®ååã¨ã¡ã¼ã«ã¢ãã¬ã¹ã管çããå ´åã次ã®ãããªæ¹æ³ã§ããã·ã¥ã使ã£ã管çãã§ãã¾ãã $hash{'Akai'} = 'akai@domain.com'; $hash{'Ishikawa'} = 'ishi@domain.com'; $hash{'Ueda'} = 'ueda@domain.com'; è¤æ°ã®å¤ãä¸åº¦ã«ããã·ã¥ã¸ä»£å ¥ããã«ã¯ããã¼ãå¤ã®é çªã§è¨è¿°ãã¾ãã
éå¼ãRubyã¯Rubyã使ã£ã¦ããããäºããããã®æ¹æ³ã調ã¹ãããéå¼ãã®ãªãã¡ã¬ã³ã¹ã§ãã éå¼ãRubyã¯ãã¨ãã¨Wikiã§éç¨ãã¦ãã¾ããããã®ãããæ¬ãµã¤ãã®ã³ã³ãã³ãã¯ç§ä»¥å¤ã®å¤ãã®æ¹ã«ãã£ã¦ä½æã»ç·¨éããããã®ã§ãã 2017å¹´ã«éçHTML(jekyll)ã®ç®¡çã¸ç§»è¡ãã¾ãããã2018å¹´10æããScrapboxã¸ç§»è¡ãã¾ãããã©ãªãã§ãç·¨éããã ãã¾ãã®ã§ããååããã ããæ¹ã¯ãããããé¡ããã¾ãã éå¼ãRuby (https://scrapbox.io/rubytips/éå¼ãRuby)
æ³¨ï¼ Rubyã¯2.1.0ããSemantic Versioningãæ¡ç¨ãã¦ãã¾ãã Ruby 2.1.1, 2.1.2çã¯ãã°ä¿®æ£ãã»ãã¥ãªãã£fixã®ã¿ãå«ãããããªãã¡ã¬ã³ã¹ã¨ãã¦ã¯2.1ã«çµ±ä¸ãã¦ãã¾ãã
ç´åå¹´éã®æ²é»ãç ´ã£ã¦OSSã®ä¸çã«æ»ã£ã¦ãã¤ã¤ããmikioã§ããå æ¥ãTokyo Cabinetï¼ä»¥ä¸ãTCãã¨å¼ã³ã¾ãï¼ã¨ãããã¼ã¿ãã¼ã¹ã©ã¤ãã©ãªããªãªã¼ã¹ãã¾ãããä»åããæ°åã«åãã¦ãTCã®è¨è¨ã¨è¦å´è©±ã«ã¤ãã¦é£è¼ãã¦ã¿ã¾ãã DBMã¨ã¯ TCã¯ãããããDBMã®ç³»èã®ãã¼ã¿ãã¼ã¹ã©ã¤ãã©ãªã§ãåç´ãªããã·ã¥ãã¼ãã«ããã¡ã¤ã«ä¸ã§æ°¸ç¶åããã ãã®æ©è½ãæä¾ãã¾ããDBMã¯AT&Tã®å¤ä»£UNIXã®æ代ããåãç¶ãããä¼çµ±è¸è½ãªã®ã§ãããç§ã¯ããããæ¯ããæè¡ã大好ããªã®ã§ãã ããã°ã©ãã®çããã¯ãPerlãRubyã§ã¯ããã·ã¥ï¼é£æ³é åï¼ã¨å¼ã°ããJavaãC++ã§ã¯mapã¨å¼ã°ãããããªãä½ããã®ãã¼ã«é¢é£ã¥ãã¦ãªãããã®å¤ãè¨é²ãããã¼ã¿æ§é ã£ã¦å®ã«ãã使ãã¾ããããä¾ãã°mixiã§ã¯ãã¦ã¼ã¶ã¢ã«ã¦ã³ãã«é¢é£ããæ å ±ï¼ååã¨ãããã¯ãã¼ã ã¨ãï¼ã¯ãã¦ã¼ã¶IDããã¼ã«ãããã
ããã·ã¥ãã¼ãã«ã¯ãä¸ç´ã®åºæ¬æã§ããããããã«ã¼ãã¨å¼ã°ããç¨ã®ããã°ã©ããªãã°ã使ããªããèªä½ããã·ã¥ã©ã¤ãã©ãªãæã£ã¦ãã¦å½ç¶ã§ãããã¾ããããã¯é常ã«æ¤ç´¢ãéã便å©ãªããã«ãawk ãã Perl ã«è³ãã¹ã¯ãªããè¨èªã§ãè¨èªä»æ§ã«æ¡ãå ¥ãããã¦ãããé£æ³é åããªã©ã¨å¼ã°ãã¦ãããè¦ããã«ã $List{'http'} = 80; ã®ããã«ãé åãªã®ã«æååãæ·»åã¨ãã¦åããããªæ¸ãæ¹ãããã¢ã¬ã§ãããããã¯ããã¼ãã§ããæååã«å¯¾ãã¦ããå¤ãã§ããä½ãã®ãªãã¸ã§ã¯ããè¿ãã¨ããåä½ã§ãããããããåä½ããããããã·ã¥ãã¼ãã«ã以å¤ã®ä½è ã§ããªãããã®ããã便å©ãªã®ã§ããã²ãã¹ã¿ã¼ãããããâ Java è¬åº§ã®ãããã·ã¥ãã¼ãã«ã æºåï½ãªã¹ãçç·å½¢æ¢æ» ããã·ã¥ãã¼ãã«ã®åç ã©ã¤ãã©ãªã®å®è£ ä»ã®å¿ç¨ Java ã® Hashtable ã¯ã©ã¹ æºåï½ãªã¹ãçç·å½¢æ¢æ» ããã·ã¥ã
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}