Naoki Takezoe
takez****@gmail*****
2006年 1月 22日 (日) 14:35:00 JST
竹添です。 06/01/22 に あき<attin****@kk*****> さんは書きました: > あきです。 > > > > > > キーワード検索結果を色分け表示させるプラグイン > > > > > http://fswiki.poi.jp/wiki.cgi?page=BugTrack%2Dplugin%2F235 > > > > > > > > > > 上記は、私がちょっと以前に作成したプラグイン(パッチ)ですが、本体への > > > > > 取り込みに関してはいかがでしょう? >竹添殿 > > > > > > > > 取り込みましょうか。もう一度パッチを見てみます。 > > > > > > ありがとうございます。 > > > ソースを見られるのはとても恥ずかしいかぎりです。 > > > 凝っている部分もあれば、力業の部分もあったりして温度差が激しいです。A^_^; > > > コミットするのでしたら、きちんと見直した方が良いかもしれません。 > > > > ソースを眺めてみたのですが、なぜこれで速くなるのかが理解できませんでした。 > > > > index関数で検索してから詳細マッチを行っているからでしょうか?でもオリジナル > > ではindex関数での検索しか行っていないので、それ以上速くなるとは思えないの > > ですが… > > > > よろしければ解説をお願いできないでしょうか? > > あまり難しく考えないで下さい。 > 何だか過度な期待を持たれているようで恐縮です。 > 高速に動作するのは、検索キーワード内に半角英字が含まれていない場合だけ > です。予めご承知おき下さい。 > 高速化に貢献しているのは下記の部分です。 > > ---------------------------------------------------------------------- > my $page2 = ""; > if($word =~ /[A-Za-z]/){ > $page2 = Jcode->new($page)->tr('a-z','A-Z'); > } > ---------------------------------------------------------------------- > > ---------------------------------------------------------------------- > my $index = 0; > if($page2){ > $index = index($page2,Jcode->new($_)->tr('a-z','A-Z')); > }else{ > $index = index($page,$_); > } > ---------------------------------------------------------------------- > > オリジナルのソースでは、半角大小文字を同一視するために、一度、検索キー > ワードも全ページの内容も半角大文字に変換しています。 > この変換(コピー)が遅くなっている原因です。 > index関数で検索を高速化しても、その前に全文コピーを行うなら、その効果は > 全く活きてきません。 なるほど、了解です。解説ありがとうございました。 -- Naoki Takezoe <takez****@gmail*****>