大佬教程收集整理的这篇文章主要介绍了ios – NSSet迭代比NSMutableArray迭代消耗更多时间,NSArray迭代比NSMutableArray迭代消耗更多时间,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这里,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",[[NSDate date]timeIntervalSinceDate:startDate]); startDate = [NSDate date]; for (NSString *Strin in Set) //NSSet { // same Implementation } NSLog(@"Time for Set %d Iteration : %f",[[NSDate date]timeIntervalSinceDate:startDate]);
输出如下:
NSMutableArray 10000000迭代的时间:0.048785
NSArray 10000000迭代的时间:0.390537
NSSet 10000000迭代的时间:4.684203
为什么NSSet和NSArray迭代时间之间存在如此巨大的差异.
请仔细阅读您的答案.
编辑:
我找到了上面迭代时间背后的实际原因,因为数组和Set中的计数不等.我已经发布了实际的问题here.此外,我可以在这里发布相同的内容,但这个页面似乎太无证了,而且原因背后的原因也有偏差.再次感谢大家的回应.
#import <Foundation/Foundation.h> #define COLLECTION_SIZE 10000000 static NSString *randomString() { unichar buffer[18]; NSUInteger size = (arc4random() % 12) + 6; for (NSUInteger i = 0; i < size; i++) { buffer[i] = (arc4random() % 93) + '!'; } return [[NSString alloc] initWithCharacters:buffer length:size]; } static NSSet *createCollection(NSUInteger sizE) { NSMutableSet *collection = [[NSMutableSet alloc] init]; for (NSUInteger i = 0; i < size; i++) { for (;;) { NSString *s = randomString(); if (![collection member:s]) { [collection addObject:s]; break; } } } return collection; } static NSTimeInterval timedIter(id<NSFastEnumeration> collection) { NSUInteger totALLENgth = 0; NSDate *startDate = [NSDate date]; for (NSString *s in collection) { totALLENgth += [s length]; } return [[NSDate date] timeIntervalSinceDate:startDate]; } int main(int argc,const char **argv) { @autoreleasepool { NSSet *set = createCollection(COLLECTION_SIZE); NSArray *array = [set allObjects]; NSMutableArray *mutArray = [[set allObjects] mutableCopy]; NSLog(@"set iteration=%f",timedIter(set)); NSLog(@"array iteration=%f",timedIter(array)); NSLog(@"mutArray iteration=%f",timedIter(mutArray)); } return 0; } $clang -o itertime itertime.m -fobjc-arc -framework Foundation $./itertime 2013-11-13 11:23:13.344 itertime[77576:707] set iteration=0.422592 2013-11-13 11:23:13.654 itertime[77576:707] array iteration=0.309387 2013-11-13 11:23:13.964 itertime[77576:707] mutArray iteration=0.309107
以上是大佬教程为你收集整理的ios – NSSet迭代比NSMutableArray迭代消耗更多时间,NSArray迭代比NSMutableArray迭代消耗更多时间全部内容,希望文章能够帮你解决ios – NSSet迭代比NSMutableArray迭代消耗更多时间,NSArray迭代比NSMutableArray迭代消耗更多时间所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。