2

以下のように、ファイルシステム内のすべてのファイルに関するエクステントに関する情報を含むテキストファイルがあります C:\Program Files\abcd.txt 12345 100 23456 200 C:\Program Files\bcde.txt 56789 50 26746 300 .. .

今、すべてのファイルのエクステントを見つけようとする別のバイナリがあります。現在、線形検索を使用して、上記のテキスト ファイル内のファイルのエクステント情報を検索しています。これは時間のかかるプロセスです。これをコーディングするより良い方法はありますか? BTree のような適切なデータ構造を実装するように。B+ ツリーを使用する場合、キーとなるブランチ ファクターは何を使用する必要がありますか?

4

2 に答える 2

5

データベースを使用します。

ファイルにツリーを実装する際の重要なポイントは、レコード長を固定し、ポインターの代わりにファイル オフセットを使用することです。

データベースを使用します。うーん、SQL Lite

ファイルに関して考慮すべきもう 1 つの点は、(ハード ディスクにキャッシュがあるかどうか、または OS にキャッシュがあるかどうかに関係なく) データのチャンクでの読み取りは、個々のアイテムの読み取りよりも高速であることです。ページをノードとして使用する B+Tree を実装しました。

データベースを使用します。データベースはすでに作成され、テストされています。

より効率的な設計は、最初のノードをメモリに保持することです。これにより、ファイルからのフェッチ数が減少します。プログラムにスペースがある場合、最初の数レベルをメモリに保持すると、実行速度が向上する場合もあります。

データベースを使用します。

プログラムの他の機能に集中したかったので、アプリケーションの B ツリー実装を書くことを断念しました。後で、現実の世界 (プログラムをスケジュールどおりに完了する必要がある世界) では、アプリケーションの「コア」に時間を費やすべきであり、既に作成およびテストされたアクセサリ (オフザ棚)。

于 2010-04-09T17:39:55.987 に答える
1

ファイルをどのように検索するかによって異なります。私はあなたがファイル名を与えられたあなたの情報を調べたいと思うと思います。その場合、ハッシュテーブルまたはTrieが使用に適したデータ構造になります。

Bツリーは可能ですが、キーが文字列であることを考えると、最も便利な選択ではありません。

于 2010-04-09T06:56:20.813 に答える