Ami*_*irZ 4 objective-c nsarray nsset fast-enumeration
我想知道为什么通过NSArray迭代比通过NSSet迭代更快?我想象它与NSArray的订购事实有关,而NSSet不是,但我是一个经过认证的答案,而不仅仅是猜测.
编辑:
我的问题是:为什么它更快,没有在该主题中解释.而不是它更快.
第一:你不能说NSArray比这更快NSSet.当您从评论中的链接获得时,它取决于您正在做什么.NSSet到目前为止,在实例中搜索对象的速度更快.这就是,当你选择时,你想做什么NSSet.
集和数组之间有两个不同之处.
所以看起来很聪明,两者都有完全不同的实现.这可能导致不同的运行时行为.所以正确的问题是:惊喜在哪里?
显然,集合的额外条件比数组的额外条件更昂贵.
顺便说一句:NSSet实现对它所带来的独特性的承诺是不可能的.这是因为只有在将对象插入集合时才会检查唯一性.在插入对象后更改对象时,它可以变为等于集合中的另一个对象.
@Amin的答案在某些方面并不准确.
Set当然比在a中搜索更快Array,因为第一次只需要O(1)时间,而第二次需要O(n)时间.NSArray比NSSet(迭代)更快,因为NSArray访问时间是精确的O(1),虽然NSSet也是O(1),但它是摊销的.NSSet你能解释一下"显然,集合的额外条件比数组的额外条件更昂贵".
| 归档时间: |
|
| 查看次数: |
3899 次 |
| 最近记录: |