我想我已经在某处读过否定评价(!= false)比== true
更快这是对的吗?
答案 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
,至少在C
,C++
,Objective C
或相关语言中,其中任何非零值等效(但不一定等于)为真。
可接受:
if (x)
if (!x)
if (x == false)
if (x != false)
错误和危险:
if (x == true)
if (x != true)
表现方面完全无关紧要。