皆さん、こんにちは。
このたび、主に Windows 環境でのバグフィックスを中心に txtsearch のバー
ジョンを上げました。
- Mac の改行文字が交じると、行番号が正常に振られないバグを修正する。
- 正規表現を若干修正。
- 同一ファイルなら、最初に見つけた文字列のみ表示する機能を追加する(-1)。
- 大文字/小文字を区別しないオプションを追加する(-i)。
- Windows でリダイレクトがうまく行かないため、出力ファイルを指定できる
ようにする(-o)。
- 最初に検索した文字列の行数を表示する。
- Web 表示で検索語に色をつける。
- Windows で binmode を使わないための誤表示を修正する。
- 複数文字列の検索時に、見つけたファイル名を間違って表示するバグを修正
する。
http://rakunet.org/usernet/tips/ (Vector のは古い)
こうしておいて、Windows95 の入った古いノート(Pentium 120MHz, メモリ
32MB 程度)にActive Perl 5.002 をインストールし、動かしてみました。その
結果、120KB 程度のデータから与えた文字列を検索するのに 1-2 分かかり、お
まけに時々 Out of Memory というエラー表示を残して終了します(使えん(^^;)。
このプログラムは RedHat 系 Linux の入った Celeron 1200MHz, メモリ
128MB 程度のマシンでは50MB のデータから単一文字列を検索するのに 2-3 秒で
よいわけです。時間が単純に 10-20 倍遅くなるというふうにはならず、予想外
のスピードダウンとなる理由として、どんなことが考えられるでしょうか?
なお、プログラムは、最初に、探すべきファイルの情報として、10KB 程度の
大きさのテーブル用変数を読みこみ、続いて 120KB 程度のテキストファイルを
読みにかかります。特別なことはしていないと思うけれど、そもそも、スペック
が違うとこのくらいスピードは違うものでしょうか……(Jcode.pm はかさばる
ので使わず、jcode.pl を組み込んで使ってみたりしているのですが)?
--
本田博通(閑舎)
テキストとスクリプトの http://rakunet.org/TSNET/