尽管,我遍历了以下NSSet、NSMutableArray、NSFastEnumeration文档,但我无法为下面提到的场景找到令人满意的来源:
在这里,NSMutableArray
和NSArray
包含NSSet
同样的 10000000 个对象。
for (NSString *strIn in MutableArray) //NSMutableArray
{
// same Implementation
}
NSLog(@"Time for Mutable Array %d Iteration : %f",ObjectCount,[[NSDate date]timeIntervalSinceDate:startDate]);
startDate = [NSDate date];
for (NSString *strIn in array) //NSArray
{
// same Implementation
}
NSLog(@"Time for NSArray %d Iteration : %f",ObjectCount,[[NSDate date]timeIntervalSinceDate:startDate]);
startDate = [NSDate date];
for (NSString *strIn in Set) //NSSet
{
// same Implementation
}
NSLog(@"Time for Set %d Iteration : %f",ObjectCount,[[NSDate date]timeIntervalSinceDate:startDate]);
输出如下:
10000000 次迭代的时间NSMutableArray
:0.048785
10000000 次迭代的时间NSArray
:0.390537
10000000 次迭代的时间NSSet
:4.684203
NSSet
为什么和NSArray
迭代时间之间存在如此巨大的差异。
请彻底回答您的问题。
编辑:我发现上述迭代时间背后的实际原因是因为数组和 Set 中的计数不相等。我在这里发布了实际问题。另外,我可以在这里发布相同的内容,但该页面似乎太无证性质,而且原因背后的原因也有所偏差。再次感谢大家的回复。