swift - 为什么静态方法比可失败的初始化程序慢?
问题描述
考虑下面的 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% 差异是一个大问题。
这是怎么回事?
解决方案
推荐阅读
- extjs - Sencha 插件不适用于 PhpStorm 2021.1?
- python - ModuleNotFoundError:没有名为“longformer.longformer”的模块;'longformer' 不是一个包
- next.js - Next.js 中的 openGraph 和 next-seo
- python - 读取 GCS blob,其中文件名来自 apache Beam 中的先前 p 集合
- elm - 从两个 posix 时间戳在 Elm 中创建倒计时
- excel - 使用 VBA 创建图表,然后使其成为活动图表
- python - 如何获取歌词歌曲中最常用的 50 个单词(Python)
- flutter - 如果应用程序未启动,Flutter Firebase 推送通知无法获取数据
- c# - 如何在循环中保存 k 的每个值?
- xaml - xamarin forms - 将文本绑定到 xaml 中的标签 - 我可以剪掉文本的结尾吗?