快速的类型转换性能成本

时间:2015-07-01 22:53:19

标签: ios swift optimization casting

我想尽可能快地保留func update:currentTime。此函数已从SKScene类重写,并且每秒调用2000到4000次。我想循环遍历所有场景的子节点并进行可选的类型转换,以查看子节点是否实现了我的Observer接口,然后调用更新。注意:我在这里引用了两个单独的func update方法。

如果我每秒传输4000次,我的表现会被拍摄吗? 更重要的是,Swift中的类型转换有多贵?

上下文代码:

// Called inside func update:currentTime
let children = self.children
    for child in children {
        if let observer = child as? TimerObserver {
            observer.update()
        }
    }

谢谢!

1 个答案:

答案 0 :(得分:2)

这取决于。从例如铸造intfloat将花费成本,因为编译器将创建实际代码以将其转换为另一个。

相比之下,对象类型转换是免费的。这只是最终一个方法调用将失败,因为强制类型不是你应该告诉它的。只是你假装对象指针指向某个合法对象。指针本身不会改变。