1

こんにちは、事前に助けてくれてありがとう、

いくつかの投稿を見てきましたが、マルチスレッドについて少し混乱しています。それはかなり簡単かもしれませんが、私はプログラミングに非常に慣れていないので、まだこれを理解しようとしています.

これらは、データベースからデータをプルするための 2 つの呼び出しであり、このままでは永遠に時間がかかります...そのため、コア データを構築する方法を学ぶまで、これらをマルチスレッド化することを考えています。現在、私はsqlliteを使用しており、データベースには10,000以上のレシピが含まれています...だから、私が望むように電光石火ではありません...

あなたの考えを教えてください。どうすればこれらを同時に実現できますか? (それさえ可能なら)

前もって感謝します。

requestCount++;
[[DataPuller sharedDataPuller] getAllDeletedRecipeList];
[DataPuller sharedDataPuller].target = self;


requestCount++;
[[DataPuller sharedDataPuller] getAllRecipesList];
[DataPuller sharedDataPuller].target = self;
4

2 に答える 2

2

SQLite を使用している場合は、FMDBの使用を検討することをお勧めします。これにより、(a) 雑草から解放されsqlite3ます。(b)FMDatabaseQueueデータ操作が互いに遭遇しないように、複数のキューからのクエリを調整できる を提供します。

そうは言っても、コアデータへの移行またはSQLiteでのマルチスレッド化で解決したいと考えている重大なパフォーマンスの問題があることを示唆しています。それはありそうもありません。ローカル データベース操作のパフォーマンスの低下は、一般に、アプリケーションの設計の問題です (たとえば、10,000 のレシピすべての詳細全体を取得しようとするのは賢明ではありません。一意の識別子のみ、おそらくそれらのみを取得することをお勧めします)。特定の画面に必要な情報を取得し、後で必要になった時点で特定のレシピの詳細のみを取得します)。ローカル データベースとの対話では、マルチスレッドの実装を検討する必要はほとんどなく、プレゼンテーションに必要な任意の時点で最小限の情報を取得するようにシステムを設計するだけです。

レシピ アプリでパフォーマンスの問題が発生している場合は、コード サンプルを使用して、特定のパフォーマンスの問題を明確に示す、より詳細な質問を送信することをお勧めします。マルチスレッドが解決策の一部でなかったとしても、私は驚かないでしょう。おそらく、インデックスを適切に使用し、任意の時点でより賢明に情報を取得することがより重要になる可能性があります。

于 2012-11-15T06:29:09.423 に答える
0

ページの形式でデータベースからレコードを取得します。つまり、1 ページあたり 20 または 50 のレシピです。YouTube アプリでご覧ください。iPhoneで、または私のアプリを見てください。HCCヘルパー

于 2012-11-15T04:54:45.253 に答える