スポンサーリンク

GPERF

名称
書式
解説
バグレポート
関連項目

名称

gperf − キーの集合から完全なハッシュ関数を生成する

書式

gperf [OPTION]... [INPUT-FILE]

解説

GNU ‘gperf’ は、完全なハッシュ関数を生成します。

長 いオプションに引数が必須であると示している場合、等価の短いオプション も引数は必須です。

入力ファイルの解釈

−e, −−delimiters=DELIMITER−LIST

デリミタを含む文字列を指定します。デリミタは、キーワードと属 性 とを切り分けるために使用されます。デフォルトは ",\n" です。

−t, −−struct−type

構 造体の型宣言を、生成コード中に含めます。 %% より前のすべての テキストは、型宣言とみなされます。キーワードと追加のフィール ド を、ひとまとめに 1 行にして、この後に続けます。

出力コード用言語

−L, −−language=LANGUAGE−NAME

指 定 し た言語でコードを生成します。現在使用可能な言語は、C++, ANSI-C, C, KR-C です。デフォルトは C です。

出力コードの詳細

−K, −−slot−name=NAME

キーワード構造体中のキーワード要素の名前を選択します。

−F, −−initializer−suffix=INITIALIZERS

キーワード構造体中の追加要素を、これで初期します。

−H, −−hash−fn−name=NAME

生成されるハッシュ関数の名前を指定します。デフォルト は ‘hash’ です。

−N, −−lookup−fn−name=NAME

生 成 さ れ る 検 索 関 数 の 名 前 を 指定します。デフォルトは ‘in_word_set’ です。

−Z, −−class−name=NAME

生成される C++ クラスの名前を指定し ま す。 デ フォ ル ト 名 は ‘Perfect_Hash’ です。

−7, −−seven−bit

7 ビット文字を仮定します。

−c, −−compare−strncmp

strcmp の代りに strncmp を使用する、比較コードを生成します。

−C, −−readonly−tables

生成される検索表を定数、すなわち読み取り専用にします。

−E, −−enum

define の代りに enum 型ローカルを使用して、検索関数用の定数値を 定義します。

−I, −−includes

必要なシステムインクルードファイル <string.h> を、コードの先 頭 でインクルードします。

−G, −−global

キー ワードの静的な表を、検索関数中に隠す (これがデフォルト動作 です) の代りに、静的な大域変数として生成します。

−W, −−word−array−name=NAME

単語一覧配列の名前を指定します。デフォルト名は ‘wordlist’ で す。

−S, −−switch=COUNT

生 成される C コードに、配列検索表の代りに、switch 文方式を使用 させます。キーファイルによっては、時間と空間の削減になりま す。 COUNT 引数は、生成される switch 文の数を指定します。値 1 ではす べての要素を含む switch を 1 個生成し、値 2 では表の半分の要 素 を 含む switch を 2 個生成し、等となります。 COUNT が非常に大き い場合、例えば 1000000 の場合、生成される C コードは二分検索 を 行います。

−T, −−omit−struct−type

型 宣言が出力ファイルへ転送されることを防ぎます。型が他のどこか で定義されている場合に、本オプションを使用します。

gperf が使用するアルゴリズム

−k, −−key−positions=KEYS

ハッシュ関数が使用するキーの場所を選択します。選択が許される 範 囲は 1-126 の範囲で、両端を含みます。位置はコンマで区切り、範囲 を指定可能であり、キー位置の順序は任意です。また、メタ文字 ’*’ は、生成されるハッシュ関数にすべてのキー位置を考慮させ、$ は ‘‘ 最後の文字’’ を意味します。例は $,1,2,4,6-10 です。

−l, −−compare−strlen

文字列比較の前に、キーの長さを比較します。これにより、検索中 の 文字列比較回数を削減します。

−D, −−duplicates

重 複 す る値にハッシュされるキーワードを扱います。非常に冗長な キーワード集合を扱う場合に有用です。

−f, −−fast=ITERATIONS

gen-perf.hash 関数を ‘‘高速’’ に生成します。 gperf の実行時間を 削 減しますが、生成される表の大きさの最小化を犠牲にします。数値 引数は、衝突解決時の繰り返し数を表現します。 ‘0’ は、‘‘キーワー ド数だけ繰り返す’’ ことを意味します。

−i, −−initial−asso=N

関 連 付けられた値の配列に初期値を与えます。デフォルト値は 0 で す。この値を大きくすると、最終的な表を大きくします。

−j, −−jump=JUMP−VALUE

‘‘ジャンプ値’’、すなわち文字の関連付けられた値を、衝突時にど れ だ け進めるかを指定します。奇数であることが必要であり、デフォル トは 5 です。

−n, −−no−strlen

ハッシュ関数の計算にキーワード長を含めません。

−o, −−occurrence−sort

キー集合中での出現頻度で、入力キーを並び換えます。検索時間を 劇 的に削減するはずです。

−r, −−random

関連付けられた値の表の初期化にランダム性を利用します。

−s, −−size−multiple=N

生成されるハッシュ表の大きさを変えます。数値引数 N は、関連付け られた値の範囲が、入力キーの数と比較して ‘‘何倍大きいまたは小さ い’’ べきことを示します。例えば、数値 3 は、 ‘‘関連付けられた値 の最大値は、入力キー数の約 3 倍の大きさを許す’’ ことを意味し ま す。逆に、値 −3 は、 ‘‘関連付けられた値の最大値を、入力キー数の 約 1/3 に小さくする’’ ことを意味します。表が大きくなると、検 索 失 敗時の時間を削減しますが、表のための余計な空間が犠牲となりま す。デフォルト値は 1 です。

情報としての出力

−h, −−help

このメッセージを表示します。

−v, −−version

gperf のバージョン番号を表示します。

−d, −−debug

デバッグオプションを有効にします (冗長な出力を標準エラーへ生 成 します)。

バグレポート

バグは <bug-gnu-utils@gnu.org> へ報告してください。

関連項目

gperf の完全な文書は Texinfo マニュアルで管理されています。 info および gperf のプログラムがあなたのサイトで適切にインストールされていれば、 コ マンド

info gperf

で完全なマニュアルにアクセス可能です。

スポンサーリンク