代码之家  ›  专栏  ›  技术社区  ›  warrenm

与现有核心数据实体统一

  •  1
  • warrenm  · 技术社区  · 15 年前

    现在,我先创建一组现有项,然后再遍历(可能的)新项列表。我的理论是,在第一次迭代中,所有的项都会出错,并且假设我们没有内存紧张,那么在迭代过程中,这些项中的大多数都会保持驻留状态。

    1. 使用字符串比较进行uniquing,遍历所有“新”项并与所有现有项进行比较(当前方法)
    2. 使用谓词根据“new”项的属性筛选现有项集。
    3. 对核心数据使用谓词来确定每个“新”项的唯一性(不检索现有项集)。

    选项3是否可能比我目前的方法更快?你知道更好的方法吗?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Alex Reynolds    15 年前

    整数散列值的比较生成传入RSS新闻项的组件的散列,使用谓词筛选具有相同散列属性值的所有项,并查看是否提取了任何对象,这可能比每个实体中所有属性的字符串比较产生更好的性能。

        2
  •  1
  •   cahlbin    15 年前

    ohhorob提出的解决方案的第三步可能是最有效的实现,如本节的核心数据文档所述 'Implementing Find-or-Create Efficiently' . 也就是说,在hash属性之后对传入项及其对应的现有项进行排序,然后并行地在两个集合上循环。

        3
  •  0
  •   ohhorob    15 年前

    根据Alex的回答,整数属性的谓词应该更快,但是策略应该调整以更好地适应任务:

    1. 收集所有传入项哈希的列表

    2. 迭代传入项,跳过那些在获取的匹配项中有哈希的项

    此外,您还可以获取字典结果,以避免设置不使用的托管对象(除非您打算更新现有对象,而不是跳过相同的传入项)