0

Ultralite DB の 6 つの異なるテーブルから約 10K レコードのデータをロードしようとしています。

6 つの異なるテーブルに対して異なる関数を作成しました。

NSInvokeOperations、NSOperations、GCD、サブクラス化 NSOperation を使用してこれらを並行してロードしようとしましたが、何もうまくいきません。

実際、1 つのテーブルから 10K をロードするには 4 秒かかり、別の 5 秒からは、これら 2 つをキューに入れておくと 9 秒かかります。これは、私のコードが並行して実行されていないことを意味します。

パフォーマンスの問題を改善するには?

4

3 に答える 3

3

やり方は複数あるかもしれません。

私が提案するのは次のとおりです。

  • テーブルビューの行数を正確な数に設定します(あなたの場合は10k)
  • テーブル ビューは、開始時に少数のセルのみを作成するように最適化されています (プル モデルに従います)。そのため、cellForRowAtIndexPath は開始時に数回だけ呼び出されます。
  • 配列を用意し、開始時に 50 エントリのみをフェッチします。カウンター変数を用意します。
  • ユーザーがテーブル ビューをスクロールし、カウントが 50 に達すると、次の 50 個のアイテムを取得し (時間がかかりません)、セルに次の 50 個のデータを入力します。同じことをやり続ける。

それがうまくいくことを願っています。

于 2013-04-25T12:19:23.280 に答える