ios - 识别慢代码以优化构建时间
问题描述
我正在使用这些Compilation Swift Flag来识别减慢编译时间的代码:
-Xfrontend -warn-long-function-bodies=100
-Xfrontend -warn-long-expression-type-checking=100
然后在构建之后,我得到warnings
这样的:
Instance method 'startFadePositionTitle()' took 2702ms to type-check (limit: 500ms)
对于这部分代码:
func startFadePositionTitle() -> CGFloat {
let value: CGFloat = ((backgroundImage.frame.height/2 - contentTitle.frame.height/2) - navbarView.frame.height)/2
return value
}
有人能解释一下这种方法有什么问题吗?我可以改进什么?
解决方案
你应该把它分成更小的块,然后 Swift 可以更容易地进行类型检查。而且你说的越多,Swift 思考的就越少。所以你可以帮助编译器并告诉它你已经知道的任何事情:
func beginFadePositionTitle() -> CGFloat {
let n: CGFloat = 2
let a: CGFloat = self.backgroundImage.frame.height/n
let b: CGFloat = self.contentTitle.frame.height/n
let ab: CGFloat = a - b
let c: CGFloat = self.navbarView.frame.height
let abc: CGFloat = ab - c
return abc/n
}
实例方法“beginFadePositionTitle()”需要 1毫秒进行类型检查(限制:1 毫秒)
这是您将所有内容都告诉编译器时的结果。看到不同?
推荐阅读
- google-sheets - 谷歌表格:有没有办法为一个增长到重复给定次数的序列制作一个数组
- uicollectionviewcell - 按住它们后如何让集合视图单元格摇晃?
- android - 通过 ADB 在 Android 中执行一组命令
- javascript - 如何发出 NodeJS 请求并将其通过管道传输到另一个响应中
- python - jinja2.exceptions.TemplateNotFound: index.html 渲染错误
- html - 无法更改文字大小
- reactjs - 单击同一链接后,React Router 无法重新呈现默认页面
- angular - Nrwl NX Monorepo(v12.3.5)上的 nx 服务应用程序(Angular v12.0.0)上的警告
- java - java.lang.SecurityException:com.myapp.android 与注册签名不匹配。FE:05:..01
- datatables - 使用固定表查找和乘法