3

私は現在、ユーザーの支出と収入に関する情報をローカルの SQLite データベースに保存し、それをさまざまな図などとして表示することになっている学校 (Android アプリケーション) のプロジェクトに取り組んでいます。

私の質問は; 何が速いでしょうか?特定の費用に関する情報を取得するために、データベースに対して常にクエリを実行していますか?それとも、単に起動時にクエリを実行し、返された値をオブジェクトとしてリストに格納していますか?

ありがとう!

4

6 に答える 6

5

実際には、実行する必要があるデータの量とクエリの複雑さに依存します。何千ものオブジェクトを扱っていて、それぞれの特定のプロパティを確認するためにリストを反復処理する必要がある場合は、データベースを使用する方が高速である可能性があります。

于 2013-09-18T13:30:23.103 に答える
5

DB からすべてのエントリを一度に取得し、使用するまでリストに保存する方が高速です。

それらのエントリを検索したい場合を除きます。「市場」のように見えるすべてのエントリを探している場合は、データベースで検索し、結果をリストに入れて表示します。

基本的に、回避したいのは、ListAdapter が getView を呼び出して新しいデータが必要になる正確な時間に、データベースからすべてのエントリを取得することです。

于 2013-09-18T13:29:12.100 に答える
4

それらをリストとして保存すると、間違いなく高速になります。ここに内訳があります

データをロードしてリストに保持すると、メモリ内にあり、既に必要な形式になっているため、常にアクセスできます。

毎回クエリを実行する場合は、3 つの手順が必要です。
1) メモリ (ハード ドライブ) からデータを読み取る
2) 目的のオブジェクトに変換する
3) メモリ (RAM) に
データを格納する 4) メモリ (RAM) からデータを読み取る

ご覧のとおり、ステップが多すぎて実行が遅くなります

于 2013-09-18T13:30:13.133 に答える
2

答えは次のとおりです。場合によります。リストに少数のアイテムしかない場合は、起動時にそれらをプルする方がほぼ確実に高速です。ただし、何千ものアイテムがある場合は、アプリケーションの起動が大幅に遅くなる可能性があります (もちろん、個々のアイテムにアクセスする方が速くなります)。

私のアドバイスは、実際にテストして、あなたが持っているデータセットでどのアプローチが最も効果的かを確認し、経験的な証拠に基づいて決定することです.

于 2013-09-18T13:33:30.497 に答える