- PR -

ハッシュ関数生成プログラムgperf

1
投稿者投稿内容
sand
大ベテラン
会議室デビュー日: 2007/01/15
投稿数: 247
投稿日時: 2007-09-09 23:12
これなんですが、難しすぎて何を言っているのかさっぱりわかりません。
噛み砕いて教えていただけないでしょうか

gperf を使って効率的に C/C++ コマンド・ラインを処理する
http://www-06.ibm.com/jp/developerworks/linux/library/l-gperf.shtml?ca=drs-
paniponi-x
常連さん
会議室デビュー日: 2006/01/14
投稿数: 27
投稿日時: 2007-09-11 03:03
gperf というのは、与えられたデータ(キーワード群)に対して
完全ハッシュ関数を生成するユーティリティです。

完全ハッシュ関数というのは、あらかじめ定められたデータ群に対して
衝突が発生しないハッシュ関数のことです。完全ハッシュ関数のうち、
ハッシュエントリの数と登録データの数とが等しいものを特に最小完全
ハッシュ関数といいます。

登録されているキーワードにおいては衝突が発生しないことになっているので、
ある文字列が渡されたときにそれをハッシュ関数にかけてハッシュ値を求め
同じハッシュ値を持つキーワードと比較して違うものであれば、その文字列は
決してキーワードではないことが判明します。

一方 if-else の羅列の場合はキーワードでないということはすべての判定を
行わなければなりません。

そこで完全ハッシュ関数を使うことにより、プログラムのオプション指定文字列の
チェックを高速にできますよ。という主張なんでしょうが、正直
その程度のバリエーションで if-else とどのくらい性能差が出るか
ちと疑問ではあります。

つーかこのページに書いてあることってほとんど gperfの使い方のような
気がするんですが、どの辺がわかりませんか?


sand
大ベテラン
会議室デビュー日: 2007/01/15
投稿数: 247
投稿日時: 2007-10-04 23:50
paniponi-xさん

わかりやすい解説ありがとうございます。
悩みがふっとびました。
ちなみにわからなかったのはgperfを使う意図です。


引用:

チェックを高速にできますよ。


→チェックの高速化というよりも何百行ものif-elseコードの骨の折れる保守作業逃れという意味合いが強いみたいですね。


shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2007-10-05 01:11
引用:

sandさんの書き込み (2007-10-04 23:50) より:
ちなみにわからなかったのはgperfを使う意図です。


「ちなみに」も何もそれを最初に書くべきだと思うのですが、sandさんはいつも後出しにされますよね?何か意図があってのことですか?
1

スキルアップ/キャリアアップ(JOB@IT)