- - PR -
ハッシュ関数生成プログラムgperf
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-09-09 23:12
これなんですが、難しすぎて何を言っているのかさっぱりわかりません。
噛み砕いて教えていただけないでしょうか gperf を使って効率的に C/C++ コマンド・ラインを処理する http://www-06.ibm.com/jp/developerworks/linux/library/l-gperf.shtml?ca=drs- | ||||
|
投稿日時: 2007-09-11 03:03
gperf というのは、与えられたデータ(キーワード群)に対して
完全ハッシュ関数を生成するユーティリティです。 完全ハッシュ関数というのは、あらかじめ定められたデータ群に対して 衝突が発生しないハッシュ関数のことです。完全ハッシュ関数のうち、 ハッシュエントリの数と登録データの数とが等しいものを特に最小完全 ハッシュ関数といいます。 登録されているキーワードにおいては衝突が発生しないことになっているので、 ある文字列が渡されたときにそれをハッシュ関数にかけてハッシュ値を求め 同じハッシュ値を持つキーワードと比較して違うものであれば、その文字列は 決してキーワードではないことが判明します。 一方 if-else の羅列の場合はキーワードでないということはすべての判定を 行わなければなりません。 そこで完全ハッシュ関数を使うことにより、プログラムのオプション指定文字列の チェックを高速にできますよ。という主張なんでしょうが、正直 その程度のバリエーションで if-else とどのくらい性能差が出るか ちと疑問ではあります。 つーかこのページに書いてあることってほとんど gperfの使い方のような 気がするんですが、どの辺がわかりませんか? | ||||
|
投稿日時: 2007-10-04 23:50
paniponi-xさん
わかりやすい解説ありがとうございます。 悩みがふっとびました。 ちなみにわからなかったのはgperfを使う意図です。
→チェックの高速化というよりも何百行ものif-elseコードの骨の折れる保守作業逃れという意味合いが強いみたいですね。 | ||||
|
投稿日時: 2007-10-05 01:11
「ちなみに」も何もそれを最初に書くべきだと思うのですが、sandさんはいつも後出しにされますよね?何か意図があってのことですか? |
1