我正在执行类型的多次迭代:
masterSet=masterSet.union(setA)
随着集合的增长,执行这些操作所需的时间也在增长(我想,正如人们所期望的那样)。
我希望花时间检查setA的每个元素是否已经在主集中了?
我的问题是,如果我知道主集在setA中不包含任何元素,我可以更快地做到这一点吗?
[更新]
鉴于这个问题仍然吸引着人们的意见,我想我可以从下面的评论和回答中澄清一些问题:
当我在很多迭代中迭代时,我知道setA
与masterSet
是不同的,因为它是如何构造的(不需要处理任何检查),但是有一些迭代我需要唯一性检查。
我想知道是否有办法“告诉”这个masterSet.union()
过程这次不用去做唯一性检查,因为我知道这个过程和masterSet
是不同的,只要快速添加这些元素,相信程序员的断言,它们肯定是不一致的。通过调用一些不同的“.unionWithDistinctSet()
”过程或其他东西。
我认为响应表明这是不可能的(而且真正的set操作应该足够快),但是使用masterSet.update(setA)
而不是union,因为它稍微快一些。
我已经接受了最明确的回应,解决了当时的问题,继续我的生活,但我还是很想知道我的假设是否存在?
正如mgilson指出的,可以使用
update
从另一个集合就地更新集合。实际上,这样做的速度要快一点:您可以使用
set.update
就地更新主集。这节省了一直分配新集合的时间,因此应该比set.union
快一点。。。当然,如果你在循环中这样做:
您可能会通过以下方式提高性能:
最终,集的成员资格测试是O(1)(在平均情况下),因此测试元素是否已经包含在集中并不是一个真正的性能大问题。
如果你知道你的元素是独一无二的,那么一个集合不一定是最好的结构。
一个简单的列表扩展起来要快得多。
相关问题 更多 >
编程相关推荐