掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ファイル内検索を速く行うには? (ID:90473)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ファイル上のデーターが固定長で、ソートされているのなら、FileStreamクラスの Seekメソドと、BinaryReaderクラスのReadChars等を使って、二分木検索をすれば いいのでは。 又は検索が複数回行われる場合は、最初に一旦全てのデーターを読み、検索にかかわる 頭の数文字分を配列データーに入れておいて、検索時は先ず配列から該当の文字 拾い出して、一致するデーターだけ配列のインデックスをKeyにファイルから読み込む 等の方式もありかな。 ファイルから文字列を検索する場合、ハードディスクや、ネットワークからデーターを 読み出す訳ですから、データーが何行有るというよりも、ファイル全体の大きさが、 処理時間に関しては支配的になります。 たとえば、 『80バイトの固定長データーがソートされて20,000行程度、ファイルに保存されています。 この中から複数回文字を検索するのですが、現在ファイルの頭から一行ずつ読み込んで 検索しているので、検索文字がファイルの最後の方に有ると5秒程度かかってしまいます。 これを革命的に短縮する方法を。。。。。』等と書けば判りやすいのでは。 更に、データーの形式は ID=XXXXXXXXXX NAME=YYYYYYYYYY ... X,Yは半角英数字、改行付き などと書けば親切。 マシンスペックに関しては、データーが保存されているメディアの読み出し速度、 たとえばハードディスクに保存されているので有れば、ハードディスクのスペックが、 ネットワーク上のファイルであればであれば、ネットワークのスピードが処理速度に 関しては支配的になります。 ハードディスクはUltra ATA/100 、シークタイム8 ms avg フォーマット方式ははNTFS... 等と書くのは少々行き過ぎ。。。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.