Hoo*_*cat 5 performance cocoa if-statement objective-c switch-statement
Objective-C是否评估一个if... else if...块上的每个语句,或者它是否会对每个语句进行评估,然后在找到真实条件时跳过剩余的评估?
这更像是一个与绩效相关的实用问题而不是其他任何问题.
是的,我知道if块本身的内容没有被执行,但我指的是得到评估的实际语句.
例
if ([condition A] == test) {
// Do something
} else if ([condition B] == test) {
// Do something
} else if ([condition C] == test) {
// Do something
} else {
// Do something because all other tests failed
}
Run Code Online (Sandbox Code Playgroud)
那么......如果条件A为真,那么条件B和C是否还要进行评估?
如果他们这样做,那么使用switch语句是否以相同的方式执行,或者一个switch只测试每个条件,然后由于中断而退出评估?
我的理解是,在一个if... else if...块上,每个条件都被评估,因此使用一个开关或嵌套如果(呃 - 不喜欢那里的想法)对大量数据的大型评估操作可能会更快(成千上万的项目是检查可能的一百个陈述).
只是好奇 :-)
Eik*_*iko 12
不,如果满足条件A,则不评估B和C. 实际上,它们是其他条款的一部分,无论如何都不会被执行.
只是旁注:if (condA || condB)或者如果(condA && condB)也懒惰地评估,即在第一种情况下condB仅在condA为假时被评估,在第二种情况下当condA为真时.
| 归档时间: |
|
| 查看次数: |
5766 次 |
| 最近记录: |