Core Data を使用して、大量 (1000 秒) のアイテムを保存しています。各アイテムのプロパティのペアは一意性を判断するために使用されるため、新しいアイテムが入ってくると、それを挿入する前に既存のアイテムと比較します。着信データは RSS フィードの形式であるため、多くの重複があり、一意化ステップのコストは O(N^2) であり、かなりの量になっています。
現在、(可能性のある) 新しいアイテムのリストを反復処理する前に、既存のアイテムのセットを作成しています。私の理論では、最初の反復ですべての項目に障害が発生し、記憶に追われていないと仮定すると、これらの項目のほとんどは反復の過程で常駐したままになるというものです。
私のオプションは次のように表示されます。
- 一意化、すべての「新しい」アイテムの繰り返し、およびすべての既存のアイテムとの比較に文字列比較を使用します (現在のアプローチ)
- 述語を使用して、「新しい」アイテムのプロパティに対して既存のアイテムのセットをフィルター処理します。
- Core Data で述語を使用して、各「新しい」アイテムの一意性を判断します (既存のアイテムのセットを取得する必要はありません)。
オプション 3 は、現在のアプローチよりも高速になる可能性がありますか? もっと良い方法を知っていますか?