0

約100レコードのテーブルがあります。1 つのレコードには、文字列 (識別子) と Blob が含まれています。Blob はシリアル化されたパス (Android) です。Blob のサイズは 20kb から 100kb です。(データをファイルとしてディスクに保存するのではなく、データベースに保存したい)。データベースは読み取り専用です。

ブロブをパス オブジェクトにロードし、起動時にできるだけ速く表示するのが好きです。データベースからロードした後 ( dbcache )、LRUCache に保存します。LRUCache からパスを参照した後は、非常に高速です。DB からの最初の読み込みが遅い。(約 100 のパス (20kb - 100kb) をロードするのに 5 秒かかります。これは私が後押しするのが好きです)。ヒントはありますか?

無料の sqlite4java ( JNI ) ライブラリを見つけました。パフォーマンスと sqlite に関して言及されています。

これは、読書のパフォーマンスを向上させるための解決策になるでしょうか? これに関する経験はありますか?

4

1 に答える 1

1

私はそうは思わない。

これらが読み取り専用の参照データなのか、書き込み可能なトランザクションなのかはわかりません。それは違いを生む。

これらのデータを繰り返し配列に読み込む場合を除き、CPU やメモリのパフォーマンスが問題になる可能性は低いと言えます。それぞれ 0.2MB のドキュメントが 1000 個あると、200MB の RAM が消費されます。それらが で静的Stringsである場合、それらMapは perm gen になってしまうに違いありません。それに応じてサイズを調整する必要があります。

データ構造を適切に選択します。値型でそれWeakHashMapを作ります。SoftReference

それらすべてが常に必要になると確信していますか?

パフォーマンスの問題が発生する前に、パフォーマンスの問題が発生すると想定しています。機能し、パフォーマンスを測定し、必要な場合にのみ問題を複雑にすることができる最も単純なことを行います。

于 2013-09-16T12:07:02.653 に答える