【问题标题】:Why is NSFastEnumeration fast?为什么 NSFastEnumeration 快?
【发布时间】:2012-01-16 14:18:03
【问题描述】:

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

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

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

提前致谢。

【问题讨论】:

标签: objective-c performance cocoa iterator fast-enumeration


【解决方案1】:

根据容器的不同,NSFastEnumeration 至少与NSEnumerator 一样快,但通常要快得多,因为它涉及的方法调用更少。

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-11-02
      • 2014-11-05
      • 2022-01-14
      • 2018-03-22
      • 2021-12-19
      • 2013-09-09
      • 1970-01-01
      • 2015-07-24
      相关资源
      最近更新 更多