0

在 php 中,是这样的:

$ifTrue = ((1 == 1) and (2 == 2));
if ($ifTrue) {
  echo "derp";
}

比这更贵:

if ((1 == 1) and (2 == 2)) {
    echo "derp";
}

我已经将条件表达式存储在变量中以清理多行 if 语句。到目前为止,我没有看到性能上的差异。但我的感觉是,因为我通过这样做在内存中保留了一个位置,所以我逐渐消耗了内存,对于大型脚本,这可能会对性能造成巨大的影响,可能未被发现。

追问:在其他语言如javascript或perl的费用上会不会有区别?

4

1 回答 1

3

第一:过早的优化总会带来麻烦。如果您不知道某些条件,请不要尝试这样做。

接下来,您的答案取决于具体情况。例如,您的表达式将被使用多少次?示例:让它成为:

$foo = very_expensive_function_here();

if($foo)
{
}
//
if($foo && something_else_1())
{
}
//...
if($foo && something_else_1000())
{
}

- 在这种情况下,您将获得极大的速度提升,因为您将摆脱 1000 次昂贵的函数执行时间。

但是,如果您的案例只是单一且简单的布尔表达式怎么办?那么这一切都没有意义 - 如果您可以即时评估表达式一次,为什么还要使用临时变量?

于 2013-11-06T14:40:03.323 回答