速查 NSArray NSSet NSHashTable 快速遍历之速度比较
因为NSArray中的指针并不是简单的连续存放的,所以简单的测试了Cocoa的三种集合的快速遍历(NSFastEnumeration)性能,给出简单的参考。
添加元素:
[collection addObject:[NSObject new]];
遍历工作:
for (id item in collection.objectEnumerator) { [item isProxy]; }
循环次数:1,000,000
样本:
NSMutableArray; //0.026123/0.028087/0.031107/0.026678/0.024862/0.023245 NSMutableSet; //0.044908/0.026870/0.027532/0.035661/0.034451/0.027642 NSHashTable; //0.130406/0.128523/0.116676/0.117398/0.121508/0.113544
HashTable最差,慢4倍左右;
数组最稳定,Set不稳定标准差大,数组微胜。
结论:for in中还是数组有优势。