2

プログラムのデータベースである巨大なテキスト ファイル (~5GB)があります。実行中、このデータベースはstring::find()、string::at()、string::substr() などの文字列関数で何度も完全に読み取られます...

問題は、 string::max_sizeが明らかに小さすぎるため、このテキスト ファイルを 1 つの文字列で読み込むことができないことです。

これをどのように実装しますか?一部を文字列にロードする->読み取り->閉じる->別の部分を同じ文字列にロードする->読み取り->閉じる->...より良い/より効率的な方法はありますか?

4

2 に答える 2

1

これをどのように実装しますか?

SQLite などの実際のデータベースを使用します。インデックスを持つことによるパフォーマンスの向上は、別の API を学習する時間を補う以上のものです。

于 2012-06-04T03:49:34.553 に答える
0

これはデータベースなので、多くのレコードがあると思います。それは、レコードごとにデータクラスを実装し、使用方法に応じてリスト/ベクトル/などを設定することが最善のアイデアであることを意味します。ファイルが大きいため、永続キャッシュも調べます。

そして、すべてのレコードのコンテナ クラス内で、必要に応じて検索などの機能を実装できます。しかし、このサイズのデータ​​ベースについて提案されているように、おそらくデータベースを使用するのが最善です。

于 2012-06-04T03:44:18.920 に答える