什么代码在性能级别上花费更多

时间:2016-07-26 12:31:17

标签: php performance oop php-7

每个人都知道,今天的技术成本很低,我们很多人并不真正关心它。所以,看看这些代码:

方法#1

$Obj = new Obj();

if (!empty($val1)) {
    $Obj->setVal1($val1);
}

if (!empty($val2)) {
    $Obj->setVal2($val2);
}

if (!empty($val3)) {
    $Obj->setVal3($val3);
}

if (!empty($valN)) {
    $Obj->setValN($valN);
}

方法#2

if (!empty($var1) && !empty($var2) && !empty($var3) && !empty($varN)) {
    $Obj = new Obj();

    if (!empty($val1)) {
        $Obj->setVal1($val1);
    }

    if (!empty($val2)) {
        $Obj->setVal2($val2);
    }

    if (!empty($val3)) {
        $Obj->setVal3($val3);
    }

    if (!empty($valN)) {
        $Obj->setValN($valN);
    }
}

在第一个例子中,我们正在创建和对象,如果没有值存在则离开,在第二个例子中,我们首先检查值是否存在且不为空,然后创建对象并设置值。从您的角度来看哪一个是性能水平的最佳解决方案?你会在你的代码上写下哪一个?

注意: N不是无限

2 个答案:

答案 0 :(得分:2)

通常,empty()isset()等操作浪费时间。相反,更高的内存使用率和内存泄漏往往会导致更多的GC操作,new()执行需要时间的初始化,I / O操作会导致延迟,而 是您应该进行改进的地方。

如果你想详细讨论时间用法,可能会非常复杂:在编译期间,运行时,代码是否会运行等等。

答案 1 :(得分:0)

这取决于你想要什么, 第一个代码将设置值,如果它不为空,即使'另一个值可能为空,

但是第二个代码会先检查所有值,所以如果其中一个值为空,它将永远不会创建Obj。

这是一个明确的选择, 如果您认为所有值都很重要且必要,那么请使用第二个代码,如果可以将另一个值保留为空并且想要更新任何非空值,那么使用第二个代码就没有意义了