8

有谁知道是否NSFastEnumeration真的比使用NSEnumerator或(对于数组)使用整数计数器和循环遍历元素更快(如在运行时性能方面)?

如果它确实更快,它是如何达到这个速度的?

或者“快”实际上是指编写迭代代码的速度更快?

提前致谢。

4

2 回答 2

6

取决于容器,NSFastEnumeration至少和通常一样快,NSEnumerator但通常更快,因为它涉及更少的方法调用。

不必调用nextObject数组中的每个项目,使用NSFastEnumerator数组可以一次返回 C 数组中的一个对象块。迭代 C 数组比执行大量方法调用要快得多,每次调用都只查找并返回一个对象。

于 2011-12-09T08:45:52.333 回答
5

Fast enumeration并不比任何“for”循环快。在一般意义上,这是不可能的,因为基本循环已经尽可能优化。

相反,fast enumeration它比使用 Objective-C 方法调用从 Objective-C 对象的每次迭代中获取数据的“for”或“while”循环更快。

它通过批量获取数据来实现这一点,从而减少了在每次迭代中调用方法的开销。从循环内部移除方法调用也有编译器优化的好处。

于 2011-12-09T08:47:47.080 回答