最初にコアデータストアに挿入した大量のデータを解析しています。
後で、同じXMLを解析していますが、一部は更新されている可能性があります。次に、同じタグを持つ既存のレコードをチェックし、すでに存在する場合は、データでレコードを更新します。
ただし、最初の解析(約11.000レコード)には8秒ほどかかりますが、更新にはコストがかかり、144秒かかります(これらはシミュレーターの実行であるため、実際のデバイスではかなり長くなります)。
1回目は問題ありませんが(プログレスバーを表示しています)、2回目は許容できないほど長いので、速度を向上させるために何かをしたいと思います(別のスレッドのバックグラウンドで発生しますが)。
残念ながら、XML内のデータは個々のレコードごとに変更されている可能性があるため、検索または作成の問題ではありません。したがって、それぞれが基本的に更新を必要とする可能性があります。
属性のインデックスを作成しました。これにより、最初の解析と更新も高速化されましたが、それでも低速です(上記の数値はインデックス付きです)。私が気付いたのは、解析/更新が徐々に遅くなっているように見えることです。最初は高速ですが、処理されるレコードが増えるにつれて、徐々に遅くなります。
最後に、私の質問は、データセットを更新する速度を改善する方法について何か提案がありますか?レコードのフェッチにMagicalRecordを使用しています。コードは次のとおりです。
Record *record;
if (!isUpdate) {
record = [NSEntityDescription insertNewObjectForEntityForName:@"Record" inManagedObjectContext:backgroundContext];
} else {
NSPredicate *recordPredicate = [NSPredicate predicateWithFormat:@"SELF.tag == %@", [[node attributeForName:@"tag"] stringValue]];
record = [Record findFirstWithPredicate:recordPredicate];
}