gpt4 book ai didi

ios - 为什么快速枚举比普通迭代更快?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:18:19 24 4
gpt4 key购买 nike

我知道什么是快速枚举及其在 Objective-C 中的用途。我想知道为什么快速枚举比普通迭代更快?

最佳答案

它是一种更高层次的语言结构,因此它可以做更好的优化:

例如,考虑迭代一个 NSArray:

for (NSUInteger i = 0; i < [array count]; i++) {
id object = [array objectAtIndex:i];
}

对于每个迭代,有两个方法调用。 .count 是一个方法调用。 .objectAtIndex 是一个方法调用。方法调用很慢。

虽然我们可以修复第一个,例如

NSUInteger count = [array count];
for (NSUInteger i = 0; i < count; i++) {

我们无法修复第二个。

快速枚举可以将项目加载到 C 数组中并快速迭代它们,而无需调用方法。此外,另一项重大改进是减少检查 i 是否在数组边界内(使用 for i 每次迭代都需要进行一次比较!)。

当然,还有更多可能的改进,但重要的是让编译器知道我们想要做什么,而不是告诉它我们到底想怎么做。编译器可以比我们更好地完成任务。

关于ios - 为什么快速枚举比普通迭代更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42066053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com