是否有人知道NSFastEnumeration
是否真的比使用NSEnumerator
或(对于数组)使用整数计数器并循环遍历元素更快(如运行时性能)?
如果它确实更快,它如何达到这个速度?
或许“快速”实际上指的是写迭代代码更快?
提前致谢。
答案 0 :(得分:6)
根据容器的不同,NSFastEnumeration
至少与NSEnumerator
一样快,但通常要快得多,因为它涉及的方法调用较少。
不必为数组中的每个项调用nextObject
,而是使用NSFastEnumerator
,数组可以立即返回C数组中的一个对象块。迭代C数组方式比必须进行大量方法调用更快,每个方法调用都会查找并返回一个对象。
答案 1 :(得分:5)
Fast enumeration
并不比任何“for”循环快。从一般意义上讲,这是不可能的,因为基本循环已经尽可能优化。
相反,fast enumeration
比使用Objective-C方法调用从Objective-C对象获取每次迭代数据的“for”或“while”循环更快。
它通过批量获取数据来实现,减少了在每次迭代时调用方法的开销。从循环内部删除方法调用也具有编译器优化优势。