!= false vs. == true

时间:2010-11-23 16:36:04

标签: performance programming-languages evaluation

我想我已经在某处读过否定评价(!= false)比== true

更快

这是对的吗?

5 个答案:

答案 0 :(得分:14)

这不正确。所有现代编译器和口译员都将对此进行优化。

至少(对我而言)重要的是== true让我更快解释。

请记住,过早优化是万恶之源。

编辑:是的,我使用if(true)。但那不是问题。

答案 1 :(得分:4)

不,这不正确。

除了在.Net中处理bool?之外,你也不应该写。
相反,您应该写if (someBool)if (!someBool)

答案 2 :(得分:3)

当然,在宏观方案中并不重要,可读性更重要。但是这是什么?我们怎么知道的?我们测试它。公平地说,我们将在Python中使用== True和!= False测试相同数量的True和False值:

>>> from timeit import Timer
>>> import time
>>> f=Timer('x=True;x!=False;x=False;x!=False',timer=time.clock)
>>> t=Timer('x=True;x==True;x=False;x==True',timer=time.clock)
>>> f.timeit(number=10000000)
3.2700000000000005
>>> t.timeit(number=10000000)
3.629999999999999

现在,这在几次运行时非常一致。哇。测试!= False比测试== True更快。如果你必须这样做10,000,000次,你将赢得半秒钟。享受那个时光。

答案 3 :(得分:2)

别担心!

任何半合适的语言都会将你的高级代码翻译成最快的低级构造。

只需使用哪个构造产生最可读的代码。在大多数语言中,您甚至不需要使用明确的比较:如果可能,请使用if (foo)而不是if (foo == true)if (foo != false)

答案 4 :(得分:2)

永远不要测试== true,至少在CC++Objective C或相关语言中,其中任何非零值等效(但不一定等于)为真。

可接受:

if (x)
if (!x)
if (x == false)
if (x != false)

错误和危险:

if (x == true)
if (x != true)

表现方面完全无关紧要。