【发布时间】:2014-09-23 10:22:11
【问题描述】:
假设我们有一个对象,我们需要验证以下内容 -
- Object->文本长度大于0
- Object->dummy 不为空
- Objecct->dummy2 存在于另一个对象中
if 语句有两种可能性:
if(greaterThan(Object->text, 0) &&
exists(Objet->dummy) &&
inObject(Object->dummy2, Objet2))
第二种情况:
if(!greaterThan(Object->text, 0) ||
!exists(Objet->dummy) ||
!inObject(Object->dummy2, Objet2)) {
NOP
} else {
//Do something;
}
哪个会更快?提前致谢。
【问题讨论】:
-
你为什么在乎?您是否注意到那里的性能受到影响?我真的怀疑。 “过早的优化是万恶之源”……只要写出最容易阅读的内容。
-
generalu 第一个,因为您的操作较少,第一个的最坏情况是 2 AND,而第二个最坏的情况是 2 OR 和 3 NEGATION
-
你为什么关心他为什么关心?通过重复疲惫的“过早优化......”引用,您隐含地假设 OP 实际上是在过早地优化它,甚至他正在优化它。有时你只是想知道为什么,即使没有实际的好处。事实上,这个问题被标记为“理论”......
标签: performance algorithm theory