Man page - hash(3)

Packages contains this manual

Available languages:

en fr es ja ru ro

Manual

HASH

名 前
書 åŧ
čĒŦ 明
エ ナ ãƒŧ
バ グ
é–ĸ 逪 項 į›Ž
こ ぎ 文 書 ãĢ つ い ãĻ

名 前

hash - hash デ ãƒŧ ã‚ŋ ベ ãƒŧ ゚ へ ぎ ã‚ĸ ク ã‚ģ ゚ ãƒĄ ã‚Ŋ ッ ド

書 åŧ

#include <sys/types.h>
#include <db.h>

čĒŦ 明

大 äē‹ ãĒ æŗ¨ 意 : こ ぎ ペ ãƒŧ ジ は 、 バ ãƒŧ ジ ョ ãƒŗ 2.1 ぞ で ぎ glibc が 提 供 す る イ ãƒŗ ã‚ŋ ãƒŧ フ ェ ãƒŧ ゚ ãĢ つ い ãĻ čĒŦ 明 し ãĻ い る 。 バ ãƒŧ ジ ョ ãƒŗ 2.2 äģĨ 降 ぎ glibc で は 、 も は や こ れ ら ぎ イ ãƒŗ ã‚ŋ ãƒŧ フ ェ ãƒŧ ゚ は 提 供 さ れ ãĻ い ãĒ い 。 お そ ら く 、 こ ぎ ペ ãƒŧ ジ で は ãĒ く 、 libdb ナ イ ブ ナ ãƒĒ が 提 供 す る API を お æŽĸ し ãĒ ぎ だ ろ う 。

ãƒĢ ãƒŧ チ ãƒŗ dbopen (3) は デ ãƒŧ ã‚ŋ ベ ãƒŧ ゚ フ ã‚Ą イ ãƒĢ ãĢ 寞 す る ナ イ ブ ナ ãƒĒ イ ãƒŗ ã‚ŋ ãƒŧ フ ェ ãƒŧ ゚ で あ る 。 ã‚ĩ ポ ãƒŧ ト さ れ ãĻ い る フ ã‚Ą イ ãƒĢ フ り ãƒŧ マ ッ ト ぎ ã˛ と つ ãĢ hash フ ã‚Ą イ ãƒĢ が あ る 。 デ ãƒŧ ã‚ŋ ベ ãƒŧ ゚ へ ぎ ã‚ĸ ク ã‚ģ ゚ ãƒĄ ã‚Ŋ ッ ド ãĢ é–ĸ す る 一 čˆŦ įš„ ãĒ 記 čŋ° は dbopen (3) ãĢ 書 か れ ãĻ い る 。 こ ぎ マ ニ ãƒĨ ã‚ĸ ãƒĢ ペ ãƒŧ ジ で は hash į‰š 有 ぎ 情 å ą ãĢ つ い ãĻ ぎ ãŋ 記 čŋ° す る 。

hash デ ãƒŧ ã‚ŋ 構 造 は 、 æ‹Ą åŧĩ 可 čƒŊ ãĒ 動 įš„ ハ ッ ã‚ˇ ãƒĨ ゚ キ ãƒŧ ム で あ る 。

dbopen (3) ãĢ æ¸Ą さ れ る hash ã‚ĸ ク ã‚ģ ゚ ãƒĄ ã‚Ŋ ッ ド ãĢ į‰š 有 ぎ デ ãƒŧ ã‚ŋ 構 造 äŊ“ は 、 <db.h> イ ãƒŗ ク ãƒĢ ãƒŧ ド フ ã‚Ą イ ãƒĢ で äģĨ 下 ぎ よ う ãĢ 厚 įžŠ さ れ ãĻ い る 。

typedef struct {
unsigned int bsize;
unsigned int ffactor;
unsigned int nelem;
unsigned int cachesize;
uint32_t (*hash)(const void *, size_t);
int lorder;
} HASHINFO;

こ ぎ 構 造 äŊ“ ぎ čρ į´  を äģĨ 下 ãĢ į¤ē す 。

bsize

hash テ ãƒŧ ブ ãƒĢ バ ã‚ą ッ ト (table bucket) ぎ ã‚ĩ イ ã‚ē を 厚 įžŠ す る 。 デ フ り ãƒĢ ト は 256 バ イ ト で あ る 。 デ ã‚Ŗ ゚ ク ãĢ įŊŽ ã‹ れ る テ ãƒŧ ブ ãƒĢ や デ ãƒŧ ã‚ŋ ã‚ĸ イ テ ム が 大 き い テ ãƒŧ ブ ãƒĢ で は ペ ãƒŧ ジ ã‚ĩ イ ã‚ē を 大 き く す る ãģ う が 艝 い だ ろ う 。

ffactor

ãƒĻ ãƒŧ ã‚ļ ãƒŧ が 望 む hash テ ãƒŧ ブ ãƒĢ 中 ぎ 密 åēĻ ã§ あ る 。 こ れ は そ れ ぞ れ ぎ バ ã‚ą ッ ト ãĢ æ ŧ į´ で き る キ ãƒŧ ぎ æĻ‚ 数 で あ り 、 hash テ ãƒŧ ブ ãƒĢ を æ‹Ą 大 ãƒģ į¸Ž 小 を äŊœ ᔍ す る 。 デ フ り ãƒĢ ト は 8 で あ る 。

nelem

hash テ ãƒŧ ブ ãƒĢ ぎ 最 įĩ‚ ã‚ĩ イ ã‚ē を 大 ぞ か ãĢ čĻ‹ įŠ も ãŖ た 値 で あ る 。 こ ぎ 値 が ã‚ģ ッ ト さ れ ãĻ い ãĒ か ãŖ た り 、 あ ぞ り ãĢ äŊŽ く ã‚ģ ッ ト さ れ ãĻ い る と 、 hash テ ãƒŧ ブ ãƒĢ は キ ãƒŧ が å…Ĩ ãŖ ãĻ く る ãĢ åŋœ じ ãĻ æ‹Ą åŧĩ さ れ る 。 し か し 少 し パ フ り ãƒŧ マ ãƒŗ ゚ が (お そ ら く 気 äģ˜ ã ፋ åēĻ ãĢ ) čŊ ãĄ る 。 デ フ り ãƒĢ ト 値 は 1 で あ る 。

cachesize

ãƒĄ ãƒĸ ãƒĒ ãƒŧ キ ãƒŖ ッ ã‚ˇ ãƒĨ ぎ 最 大 値 (バ イ ト 単 äŊ ) ぎ 参 考 値 。 こ ぎ 値 は あ く ぞ で 参 考 で あ り 、 ã‚ĸ ク ã‚ģ ゚ ãƒĄ ã‚Ŋ ッ ド は こ ぎ 値 を čļŠ ãˆ た ãƒĄ ãƒĸ ãƒĒ ãƒŧ ぎ 剞 り åŊ“ ãĻ ãĢ 成 功 す る こ と も あ る 。

hash

は ãƒĻ ãƒŧ ã‚ļ ãƒŧ 厚 įžŠ ぎ hash é–ĸ 数 で あ る 。 全 ãĻ ぎ デ ãƒŧ ã‚ŋ ãĢ 寞 し ãĻ う ぞ く äŊœ ᔍ す る hash é–ĸ 数 と 言 う ぎ は ãĒ い か ら 、 į‰š 厚 ぎ デ ãƒŧ ã‚ŋ ã‚ģ ッ ト ãĢ 寞 し ãĻ は įĩ„ ãŋ čžŧ ãŋ ぎ hash é–ĸ 数 で は パ フ り ãƒŧ マ ãƒŗ ゚ が äŊŽ い こ と も あ る か も し れ ãĒ い 。 ãƒĻ ãƒŧ ã‚ļ ãƒŧ 厚 įžŠ ぎ hash é–ĸ 数 は äēŒ ã¤ ぎ åŧ• 数 を と ら ãĒ く ãĻ は ãĒ ら ãĒ い (バ イ ト 文 字 列 へ ぎ ポ イ ãƒŗ ã‚ŋ ãƒŧ と 、 長 さ )。 そ し ãĻ hash 値 と し ãĻ äŊŋ わ れ る 32ビ ッ ト ぎ 値 を čŋ” さ ãĒ く ãĻ は ãĒ ら ãĒ い 。

lorder

デ ãƒŧ ã‚ŋ ベ ãƒŧ ゚ ãĢ æ ŧ į´ さ れ ãĻ い る ãƒĄ ã‚ŋ デ ãƒŧ ã‚ŋ ぎ 整 数 値 ぎ バ イ ト ã‚Ē ãƒŧ ダ ãƒŧ 。 こ ぎ 数 字 は 、 順 åē ã‚’ 整 数 で 襨 し た も ぎ で あ る 。 例 え ば ビ ッ グ エ ãƒŗ デ ã‚Ŗ ã‚ĸ ãƒŗ ãĒ ら 、 こ ぎ 数 値 は 4,321 と ãĒ る 。 lorder が 0 (指 厚 さ れ ãĻ い ãĒ い )å ´ 合 、 įž 在 ぎ ホ ゚ ト で äŊŋ わ れ ãĻ い る ä¸Ļ ãŗ 順 が äŊŋ わ れ る 。 フ ã‚Ą イ ãƒĢ が æ—ĸ ãĢ 存 在 す る å ´ 合 、 指 厚 し た 値 は į„Ą čĻ– さ れ ツ ãƒĒ ãƒŧ が äŊœ ら れ た 時 ãĢ 指 厚 さ れ ãĻ い た 値 が äŊŋ わ れ る 。

フ ã‚Ą イ ãƒĢ が æ—ĸ ãĢ 存 在 し ãĻ い る (ぞ た は O_TRUNC フ ナ グ が 指 厚 さ れ ãĻ い ãĒ い ) と 、 bsize , ffactor , lorder , nelem ãĢ 指 厚 さ れ た 値 は į„Ą čĻ– さ れ 、 ハ ッ ã‚ˇ ãƒĨ が äŊœ ら れ た 時 ãĢ äŊŋ ãŖ た 値 が äŊŋ わ れ る 。

hash é–ĸ 数 が 指 厚 さ れ る と 、 hash_open は デ ãƒŧ ã‚ŋ ベ ãƒŧ ゚ が äŊœ ら れ た 時 ãĢ 指 厚 さ れ ãĻ い た hash é–ĸ 数 と äģŠ å›ž 指 厚 さ れ た hash é–ĸ 数 が 同 じ か お う か を čĒŋ ず 、 同 じ で ãĒ い å ´ 合 ãĢ は å¤ą 敗 す る 。

dbm (3), と ndbm (3) ãĢ 記 čŋ° さ れ ãĻ い る ãƒĢ ãƒŧ チ ãƒŗ へ ぎ 過 åŽģ äē’ æ› を 取 る た め ぎ イ ãƒŗ ã‚ŋ ãƒŧ フ ェ イ ゚ が 存 在 す る 。 し か し こ れ ら ぎ イ ãƒŗ ã‚ŋ ãƒŧ フ ェ イ ゚ は äģĨ 前 ぎ フ ã‚Ą イ ãƒĢ フ り ãƒŧ マ ッ ト と は äē’ æ› 性 が ãĒ い 。

エ ナ ãƒŧ

hash ã‚ĸ ク ã‚ģ ゚ ãƒĄ ã‚Ŋ ッ ド ãƒĢ ãƒŧ チ ãƒŗ は 、 å¤ą 敗 す る と ナ イ ブ ナ ãƒĒ ãƒĢ ãƒŧ チ ãƒŗ dbopen (3) で 指 厚 さ れ ãĻ い る エ ナ ãƒŧ ãĢ åŋœ じ た errno を ã‚ģ ッ ト す る 。

バ グ

バ イ ト ã‚Ē ãƒŧ ダ ãƒŧ と し ãĻ は ビ ッ グ エ ãƒŗ デ ã‚Ŗ ã‚ĸ ãƒŗ と ãƒĒ ト ãƒĢ エ ãƒŗ デ ã‚Ŗ ã‚ĸ ãƒŗ ぎ ãŋ が ã‚ĩ ポ ãƒŧ ト さ れ ãĻ い る 。

é–ĸ 逪 項 į›Ž

btree (3), dbopen (3), mpool (3), recno (3)

Dynamic Hash Tables , Per-Ake Larson, Communications of the ACM, April 1988.

A New Hash Package for UNIX , Margo Seltzer, USENIX Proceedings, Winter 1991.

こ ぎ 文 書 ãĢ つ い ãĻ

こ ぎ man ペ ãƒŧ ジ は Linux man-pages プ ロ ジ ェ ク ト ぎ ãƒĒ ãƒĒ ãƒŧ ゚ 5.10 ぎ 一 部 で あ る 。 プ ロ ジ ェ ク ト ぎ čĒŦ 明 と バ グ å ą 告 ãĢ é–ĸ す る 情 å ą は https://www.kernel.org/doc/man-pages/ ãĢ 書 か れ ãĻ い る 。