tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^3: テキストファイルの高速検索
投稿日: 2010/04/07(Wed) 11:12
投稿者魔界の仮面弁士
> どちらも7秒くらいで変わりません。

という事は、検索にかかる時間は無視できるという事ですね。

テキストファイルの読み込みに使うものとしては、以下のような手段があります。
SJIS / Unicode 変換のボトルネックもあるので、テキスト読み込みだけではなく
バイナリ読み込みの手段についても列挙しています。

とりあえず、100MB 全データを読み捨てる実験コードを書いてみて、
それぞれの処理速度やコードの可読性を調べてみては如何でしょう。


(1) Line Input # で一行ずつ読み込み。
 → 現在利用している方法。

(2) バイナリモードで Byte 配列に Get# し、StrConv で Unicode 化。
 → 読み込みバッファサイズと、末尾文字の分断制御に注意。
  Unicode 化せず、検索も(InStrB 等で)バイナリのまま行うという選択肢もあるかも。

(3) Input 関数(≠Input # ステートメント)でバイナリを読み込み、StrConv で Unicode 化。
 → 注意点については(2)と同様。

(4) FileSystemObject の TextStream で読み込み。
 → ReadAll は今回使い物にならないと思うので、ReadLine で読み込む事になるかと。

(5) ADODB.Stream のテキストモードで読み込み。
 → adReadAll 指定は今回使えないので、adReadLine か文字数指定で。

(6) ADODB.Stream のバイナリモードで読み込み、StrConv で Unicode 化。
 → (5) よりは高速だが、(2),(3) と同様の問題を考慮する必要がある。

(7) ODBC あるいは Jet の Text I-ISAM ドライバによる読み込み。
 → Format をカスタム定義にして、そこに未使用文字を指定する必要がある。
  http://msdn.microsoft.com/en-us/library/ms709353.aspx

(8) ReadFile API による読み込み制御。
 → 下記に、大容量ファイルの読み込みパフォーマンスについての話がありました。
  http://d.hatena.ne.jp/wraith13/20080430/1209565632

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。