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

NOKUBI Takatsugu knok @ daionet.gr.jp
2005年 12月 15日 (木) 12:58:38 JST


  野首です。

  正規表現をたくさん|で繋げるような処理は、例えばmigemoあたりでもやら
れています。あちらはそれほど速度低下を感じないのですが、それはmigemoの
動作する処理系のregexがGNU regex由来だからでしょうか。

At Thu, 15 Dec 2005 07:37:42 +0900,
Yukio USUDA wrote:
> my $token = '(' . (join '|', sort {length($a) <=> length($b)} @{$self->{SPECIALS}->{$type}}) . ')';
>> my $token = '(' . (join '|', @{$self->{SPECIALS}->{$type}}) . ')';
> としても数%の違いしかありませんでした
> ソートのコストとマッチングの高速化がつりあっているのか
> どちらもそれほど大きく影響がないということかは確かめていません。

  これを実装した当時と今とではperl自体と実行環境(CPUパワー等)がずいぶ
ん違うので、段々差がでにくくなっているのかもしれません。

> 元になったとされる file.kulp を見るとマッチしたら即確定となっている
> ので判定条件については File::MMagic オリジナルの考え方のようです

  はい、そうです。これはrfc822あたりのファイルで若干の不都合があったの
で、そのように変更した記憶があります。

  ともあれ、現状の環境で速くなる方向に改良するのは問題ないと思っていま
す。あるいは、他のfile(1)相当のモジュールに対応するという方向もありか
もしれません。

  File::MMagicをpure perlで作った動機は、当時WindowsでXSなperl module 
を作るのが大変そうだったからです。今ならそのあたりもずいぶんよくなって
いますし、さらに速度を追求する方向へいくのはありでしょう。

  とりあえず、近いうちにFile::MMagicのリポジトリもnamazu.orgへ引っ越そ
うと思っています。一応Tracには"MMagic"というコンポーネントも追加してあ
るので、バグ報告に関してはそちらへ誘導するつもりです。
-- 
野首 貴嗣
E-mail: knok @ daionet.gr.jp
	knok @ namazu.org / knok @ debian.org




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