[Namazu-devel-ja 774] Re: File::MMagic::checktype_data

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2005年 12月 15日 (木) 03:11:24 JST


寺西です。

# 補足と訂正

Tadamasa Teranishi wrote:
> 
> 試しにパターンが未定義ならsortでパターンを作って、定義済みなら
> それを使うといったものに変えて測定してみてはどうでしょう。
> それで速いようなら、addSpecials 時にsortしてパターンを更新するという
> のを追加すれば良いでしょう。

単純に sort の部分をコメントアウトしない修正版と修正前で比較しても
簡単に判断できるかもしれません。

> > (SPECIALSのパターンに最後にマッチした部分がファイル先頭に近い
> > 部分のものを採用するという判定部分について良くわからなかったので
> > 下記パッチでsは、パターンにマッチした回数が多いものを採用する
> > というように変えてみました)
> 
> 確かに、この判定ルールはいまいちわかりませんね。

誤解してました。

「最後にマッチした部分がファイル先頭に近い部分のものを採用」という
ことではないようです。

どうやら m/(aa|bb|cc)/mg; の際、文字列の短いものからマッチング
した方が速いようです。そのためsortしているようです。
# しかし、そのためだけにsortしたのでは、sortのコスト分不利なんでは??

sortしようが、しまいが結果に差はなく、$val{$type} にパターンのうち、
最初にマッチングした次の位置が入ります。(それもパターンが長いとその分
後ろになるから、何か変)
その後、位置情報でソートしてもっとも先頭に近い$typeが選ばれるようです。

できるだけファイルの先頭の情報で判断できるものを優先するということ
でしょうか。
テキストの判定用のようですし、先頭のヘッダ情報で判定しないと、
本文中のテキストで判断してはまずいからかな???

なお、
> そもそも、判定する順番が機械的に決められるのはいろいろ不都合が
以下の文章は、そもまま適応されます。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E




Namazu-devel-ja メーリングリストの案内