有谁知道是否NSFastEnumeration
真的比使用NSEnumerator
或(对于数组)使用整数计数器和循环遍历元素更快(如在运行时性能方面)?
如果它确实更快,它是如何达到这个速度的?
或者“快”实际上是指编写迭代代码的速度更快?
提前致谢。
有谁知道是否NSFastEnumeration
真的比使用NSEnumerator
或(对于数组)使用整数计数器和循环遍历元素更快(如在运行时性能方面)?
如果它确实更快,它是如何达到这个速度的?
或者“快”实际上是指编写迭代代码的速度更快?
提前致谢。
取决于容器,NSFastEnumeration
至少和通常一样快,NSEnumerator
但通常更快,因为它涉及更少的方法调用。
不必调用nextObject
数组中的每个项目,使用NSFastEnumerator
数组可以一次返回 C 数组中的一个对象块。迭代 C 数组比执行大量方法调用要快得多,每次调用都只查找并返回一个对象。
Fast enumeration
并不比任何“for”循环快。在一般意义上,这是不可能的,因为基本循环已经尽可能优化。
相反,fast enumeration
它比使用 Objective-C 方法调用从 Objective-C 对象的每次迭代中获取数据的“for”或“while”循环更快。
它通过批量获取数据来实现这一点,从而减少了在每次迭代中调用方法的开销。从循环内部移除方法调用也有编译器优化的好处。