什么更快? if()function()OR function(){if()}?

时间:2011-09-05 22:21:33

标签: php function if-statement

想象一下,你有一个功能可以在一种情况下完成任务,例如。如果数组不为空。

如果$array为空,会更快吗?

function dostuff($array){
    // stuff
}

if(!empty($array)) dostuff($array);

或者:

function dostuff($array){
    if(!empty($array)){
        // stuff
    }
}

dostuff($array);

我知道,“你在这里谈论毫秒”,但我只是好奇,而且我会“编写对我来说最有意义的代码”,无论如何;)

3 个答案:

答案 0 :(得分:3)

第一个是更快,因为在调用函数时会有开销(或者更确切地说,你先检查了一下),但实际上,除非你在循环中执行10.000次,否则永远不要考虑这个...但是你如果函数如此简单以至于它实际上会显着提高性能,那么应该内联它。

答案 1 :(得分:0)

我不知道如果PHP有一个运行时堆栈,但如果确实如此,每当调用一个函数时,该例程中存储的所有变量都会抛出到该堆栈上,然后在函数终止后检索。如果你只需要在if语句的计算结果为true时进行调用,那么这就节省了很多时间。

那就是说,这么短的时间很可能没有理由担心它。将if语句放在更合理的地方。

答案 2 :(得分:0)

如果您使用profiler to actually check,您会发现单次调用几乎无法衡量,但避免可能冗余的函数调用会更快一点。

我想建议您在此处查看可读性。如果您可以选择避免检查(该功能是自主的),那就去做吧。