Dee*_*rse 0 if-statement swift
我想根据某个表达式为变量赋一个布尔值.这是我的代码
方法1:
if jobListView.tableView.jobIds.count > 0 {
container.isHidden = false
} else {
container.isHidden = true
}
Run Code Online (Sandbox Code Playgroud)
方法2:
container.isHidden = jobListView.tableView.jobIds.count <= 0
Run Code Online (Sandbox Code Playgroud)
我知道第二个更具可读性,但它会对执行速度产生任何影响.
我知道第二个更具可读性
这是一个很好的论据.从您(或您的团队)更熟悉的版本开始.
会不会对执行速度产生任何影响?
如上所述 - 配置您的应用程序并找到性能瓶颈.然后,您可以决定是否需要改进此特定部分.
在这种特殊情况下,它根本不会产生任何影响,编译器足够智能以优化两种变体.这是一个简化的自包含示例:两者
var hidden = false
func foo(n: Int) {
if n > 0 {
hidden = false
} else {
hidden = true
}
}
Run Code Online (Sandbox Code Playgroud)
和
var hidden = false
func foo(n: Int) {
hidden = n <= 0
}
Run Code Online (Sandbox Code Playgroud)
生成相同的汇编代码
.private_extern __T04main3fooySi1n_tF
.globl __T04main3fooySi1n_tF
.p2align 4, 0x90
__T04main3fooySi1n_tF:
pushq %rbp
movq %rsp, %rbp
testq %rdi, %rdi
setle __T04main6hiddenSbvp(%rip)
popq %rbp
retq
Run Code Online (Sandbox Code Playgroud)
你可以验证
swiftc -O -emit-assembly main.swift
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |