for 的应用范围广基本可以NSArray、NSArray以及C语言的数组等,而for(... in ...)仅限于NSArray、NSArray等
for(... in ...) 更简洁、效率更高
测试代码:
10^7 的数组,时间单位 秒,精确度 毫秒
NSMutableArray *test = [NSMutableArray array]; for (int i= 0; i < 10000000; i++) { [test addObject:@(i)]; } int sum = 0;
double date_s = CFAbsoluteTimeGetCurrent(); for (int i = 0;i < test.count; i++) { sum += 1; } double date_e = CFAbsoluteTimeGetCurrent(); NSLog(@"ForLoop Time: %f", date_e - date_s);
date_s = CFAbsoluteTimeGetCurrent(); for (id obj in test) { sum += 1; } date_e = CFAbsoluteTimeGetCurrent(); NSLog(@"Enumeration Time: %f", date_e - date_s);
测试结果:
考虑到实际情况,ForLoop 的操作较多些。
测试代码:
硬件:i5 Cpu, 10G 内存,Mac OS X 10.9.4
数据量:10^7 的数组,
时间:单位 秒,精确度 毫秒
NSMutableArray *test = [NSMutableArray array]; for (int i= 0; i < 10000000; i++) { [test addObject:@(i)]; } int sum = 0;
double date_s = CFAbsoluteTimeGetCurrent(); for (int i = 0;i < test.count; i++) { int key = [test[i] intValue]; sum += key; sum -= key; } double date_e = CFAbsoluteTimeGetCurrent(); NSLog(@"ForLoop Time: %f", date_e - date_s);
date_s = CFAbsoluteTimeGetCurrent(); for (id obj in test) { int key = [obj intValue]; sum += key; sum -= key; } date_e = CFAbsoluteTimeGetCurrent(); NSLog(@"Enumeration Time: %f", date_e - date_s);
enumerateObjectsUsingBlock 、for 、for(... in ...) 的区别 & 性能测试
本文转载自:https://www.cnblogs.com/skyming/p/3977075.html 作者:skyming 转载请注明该声明。for VS for(... in ...) for 的应用范围广基本可以NSArray、NSArray以及C语言的数组等,而for(... in ...)仅限于NSArray、NSArray等 for(... in ...) 更简洁、效率更高 ...