首页 > 解决方案 > 为什么静态方法比可失败的初始化程序慢?

问题描述

考虑下面的 Swift 结构

struct MyStruct {
    static func create() -> MyStruct? {
        return nil
    }

    init?() {
        return nil
    }
}

忽略这个结构没用的事实,为什么调用MyStruct.create()比调用慢得多MyStruct()?他们做同样的事情。

我写了一个简短的 Playground 来确认这一点,并且它的平均速度总是至少慢 30%。另外,我正在开发一个应用程序,我正在扫描图像中的每个像素,并为每个像素查看我是否可以创建一个结构。我注意到,如果我使用可失败的初始化程序,CPU 使用率约为 53%,但如果我使用上述静态创建方法,CPU 使用率约为 67%。我更改了两者的代码,所以第一行return nil就像上面一样,我仍然在 CPU 上得到这种差异。我正在开发的应用程序非常耗费资源,因此 CPU 的约 15% 差异是一个大问题。

这是怎么回事?

标签: swiftperformanceinitializationoptionalstatic-methods

解决方案


推荐阅读