2013-08-29 31 views
5

当我用lua检查两个条件时,哪种方式在运行时间更快?Lua - 如果和和,什么更快?

if bool and somefuntion() then 
    do stuff 
end 

if bool then 
    if somefuntion() then 
     do stuff 
    end 
end 

+1

可能有一个理论上的偏见,但实际上我怀疑它是可衡量的。你有任何sytax的问题​​吗? – Jan

+0

不,但函数执行时间很长。我只是想知道如果它运行时布尔是假的.. – Fox

+2

啊,那么也许你应该问这个问题。但下面的答案是正确的。 – Jan

回答

10

两个片段运行luac -l -p,你会发现它们产生完全相同的字节码。所以,写一些更清楚的东西给你。

的原因它们是相同的是,Lua使用短路评价,如通过OllieB提及。

5

Lua懒洋洋地评价,所以它应该没有区别。

同样的效果将是合乎逻辑真短路和(& &)在C/C++

+0

如果somefunction()很长? – Fox

+1

@福克斯:我想你不明白术语laziy evalulated或短路操作。如果bool是假的,lua将不会评估某种功能(),而是以任何一种化身。 – OllieB