我正在使用 Core Data 来存储很多(1000 多个)项目。每个项目的一对属性用于确定唯一性,因此当有新项目进入时,我会在插入之前将其与现有项目进行比较。由于传入的数据是 RSS 提要的形式,经常有很多重复,并且唯一化步骤的成本是 O(N^2),这变得很重要。
现在,我在迭代(可能的)新项目列表之前创建了一组现有项目。我的理论是,在第一次迭代中,所有项目都会出错,并且假设我们没有被内存占用,大多数这些项目将在迭代过程中保持驻留。
因此,我看到了我的选择:
- 使用字符串比较进行唯一性,迭代所有“新”项目并与所有现有项目进行比较(当前方法)
- 使用谓词根据“新”项目的属性过滤现有项目集。
- 使用带有 Core Data 的谓词来确定每个“新”项目的唯一性(而不检索现有项目的集合)。
选项 3 可能比我目前的方法更快吗?你知道更好的方法吗?