【发布时间】:2011-07-07 15:11:59
【问题描述】:
Objective C 和 iphone 哪个更快?自枚举还是for循环?
我有 2 段代码可以帮助我比较。
对于这个例子,我们有一个事实,即 array 是一个带有“x”项的 NSMutableArray。 案例一:
-(void)findItem:(Item*)item
{
Item *temp;
for (int i = 0 ;i<[array count];i++)
{
temp = [array objectAtIndex:i];
if(item.tag == temp.tag)
return;
}
}
案例 2:
-(void)findItem:(Item*)item
{
for(Item *temp in array)
{
if(item.tag == temp.tag)
return;
}
}
很明显,case2 更快,是吗?
【问题讨论】:
-
我其实不知道如何计算运行时...
-
之所以称为快速枚举是有原因的 - 请参阅:cocoawithlove.com/2008/05/fast-enumeration-clarifications.html
-
那你应该先研究如何测量。然后,你的下一个研究应该是关于如何正确测量这样的东西。在您的情况下,简单地发布两个 sn-ps 并请求某人准确测量这两个代码片段是不合适的。
-
您为什么认为案例 2 更快是显而易见的?
-
除非您的数组有无数个项目,或者您调用该方法无数次,否则它通常无关紧要,除非您测量它并且它确实很重要。
标签: objective-c cocoa foundation