作者: 閑舎
日時: 2002/9/29(11:50)
 皆さん、こんにちは。

 このたび、主に 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/