1

CoreData/SQLite に関する一般的な質問

NSManagedObjectContextSQLite ストアを使用して保存する場合、これら 2 つのシナリオに大きな違いはありますか。

  • 10を含むオブジェクトで1 つのオブジェクトを追加/変更/削除した後、それ以外は変更されませんNSManagedObjectContextNSManagedObjects
  • 10'000を含むオブジェクトで1 つのオブジェクトを追加/変更/削除した後、それ以外は変更されませんNSManagedObjectContextNSManagedObjects
4

3 に答える 3

2

Enterprise Objects (Core Data が進化した元) での私の経験から一般化すると、どちらのシナリオもインデックス作成なしでは同じように高速になり、インデックス作成では 2 番目のシナリオはわずかに遅くなると思います。

SQL ストアを使用すると、1 つのオブジェクトを追加するコストは、グラフ内に他のオブジェクトがいくつあるかに関係なく、ほぼ固定されます。インデックスは他の既存のオブジェクトに依存しているため、インデックスを作成するとスケーリング効果が生じます。ただし、ほとんどの場合、これは重要ではありません。

グラフ内の関係が複雑になるほど、合計グラフ サイズの影響を受ける保存数が増えます。明らかに、オブジェクトが 10 個しかないグラフがある場合、関係には 10 個を超えるオブジェクトを含めることはできません。10,000 のリレーションシップがある場合、リレーションシップは潜在的にはるかに大きくなり、処理に時間がかかります。

要するに、SQL ストアを使用する Core Data は、グラフのサイズだけではほとんど影響を受けないように見えます。

于 2010-02-09T16:05:43.630 に答える
1

プロファイリングにより、大きな違いがあるかどうかがわかります。ただし、店舗コーディネーターのタイプがパフォーマンスに影響するのではないかと思います。SQLite データベースでのオブジェクトの更新は、おそらく XML ツリーでの更新よりも高速でスケーラブルです。

于 2010-02-09T14:32:05.033 に答える
0

私の以前の経験では、大きな違いはありません。追加/変更/削除されるオブジェクトに多くのインデックス付き属性が含まれている場合、インデックス付き属性のないオブジェクトの場合と比較してわずかに時間がかかりますが、インデックスも変更されるため、これは予想されます。

于 2010-02-09T15:45:26.527 に答える