哪种遍历NSArray/NSDictionary方式快
展开全部
对于数组来说,for-in方式遍历速度是最快的,普通风格的for和block方式速度差不多。对于字典来说,allValues方式遍历最快,allKeys和block差不多。
那么,为什么会这样呢?
NSArray:
for
(NSInteger
i = 0; i < count; ++i) {
[sum
appendString:[testArray objectAtIndex:i]];
}
这里由于存在:[objectAtIndex:i]这样的取操作,所以速度会有所下降。
而
for(NSString*
item in testArray) {
[sum
appendString:item];
}
尽管也有取操作,但是绕开了oc的message机制,速度会快一点。也有可能是编译器为了for-in作了优化。
block为什么会慢一些这个有待研究。
NSDictionary:
for
(id
akey in [testDic allKeys]) {
[sum
appendString:[testDic objectForKey:akey]];
}
那么,为什么会这样呢?
NSArray:
for
(NSInteger
i = 0; i < count; ++i) {
[sum
appendString:[testArray objectAtIndex:i]];
}
这里由于存在:[objectAtIndex:i]这样的取操作,所以速度会有所下降。
而
for(NSString*
item in testArray) {
[sum
appendString:item];
}
尽管也有取操作,但是绕开了oc的message机制,速度会快一点。也有可能是编译器为了for-in作了优化。
block为什么会慢一些这个有待研究。
NSDictionary:
for
(id
akey in [testDic allKeys]) {
[sum
appendString:[testDic objectForKey:akey]];
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询