什么更快?枚举VS For循环

L_S*_*nic 3 cocoa objective-c foundation

客观C和iPhone的速度更快?自我枚举或循环?

我有2个代码片段来帮助我比较.

对于这个例子,我们有一个事实,即array是一个带有"x"项的NSMutableArray.情况1:

-(void)findItem:(Item*)item
{
  Item *temp;
  for (int i = 0 ;i<[array count];i++)
  {

    temp = [array objectAtIndex:i];
    if(item.tag == temp.tag)
      return;
  }


}
Run Code Online (Sandbox Code Playgroud)

案例2:

-(void)findItem:(Item*)item
{
  for(Item *temp in array)
  {
    if(item.tag == temp.tag)
      return;
  }
}
Run Code Online (Sandbox Code Playgroud)

几乎可以看出case2更快,是吗?

pet*_*ert 8

它被称为快速枚举,这是有原因的.

请参阅:http://cocoawithlove.com/2008/05/fast-enumeration-clarifications.html

  • 该链接仅表示它比使用NSEnumerable更快,但不比for循环快.但这样做:http://stackoverflow.com/questions/32986/nsenumerator-performance-vs-for-loop-in-cocoa (11认同)