ManagedObjectContext の保存のパフォーマンスは、含まれる (変更されていない) オブジェクトの数に依存しますか?
-
19-09-2019 - |
質問
CoreData/SQLite に関する一般的な質問
ファイルを保存するときに、これら 2 つのシナリオの間に大きな違いはありますか? NSManagedObjectContext
SQLite ストアを使用する場合:
- 追加・変更・削除後 1つ 中のオブジェクト
NSManagedObjectContext
含む 10 それ以外は変更なしNSManagedObjects
- 追加・変更・削除後 1つ 中のオブジェクト
NSManagedObjectContext
含む 10'000 それ以外は変更なしNSManagedObjects
解決
私はあなたのシナリオの両方をインデックスとインデックスとわずかに遅い二ずに均等に速いだろうと言うでしょう(コアデータから進化)エンタープライズオブジェクトとの私の経験から一般化。
の使用とSQLストアのオブジェクトを追加するコストが大幅にかかわらず、多くの他のオブジェクトがグラフ内にあるかの固定されています。インデックスは、インデックスが他の既存のオブジェクトに依存しているため、スケーリング効果を与えていません。しかし、ほとんどの場合には、これは重要ではありません。
よりセーブグラフ内のより複雑な関係は、全グラフの大きさによって影響を受けます。もちろん、あなただけの10個のオブジェクトを持つグラフを持っている場合は、何の関係が、それ以上の10個のオブジェクトを持つことはできません。あなたは万のものを持っている場合は、関係が潜在的に非常に大きく、処理に時間がかかります。
要するに、SQLストアとCore Dataは、グラフのジャストサイズによってほとんど影響を受けないように見えます。
他のヒント
プロファイリングはあなたを教えてくれます。しかし、私は、ストアコーディネータのタイプはパフォーマンスに影響を与えると思われます。 SQLiteデータベース内のオブジェクトを更新すると、おそらく、より速く、よりスケーラブルなXMLツリーにそうするよります。
私の以前の経験では有意な差はありません。オブジェクトが追加されている場合は、/変更/削除されたインデックス付きの属性が多く含まれ、それはありませんインデックス付き属性を持つオブジェクトの場合と比較すると、ちょうど少しかかりますが、これは、インデックスので、期待されても同様に変更されます。