每个人都知道,今天的技术成本很低,我们很多人并不真正关心它。所以,看看这些代码:
方法#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不是无限
答案 0 :(得分:2)
通常,不等empty()
或isset()
等操作浪费时间。相反,更高的内存使用率和内存泄漏往往会导致更多的GC操作,new()
执行需要时间的初始化,I / O操作会导致延迟,而 是您应该进行改进的地方。
如果你想详细讨论时间用法,可能会非常复杂:在编译期间,运行时,代码是否会运行等等。
答案 1 :(得分:0)
这取决于你想要什么, 第一个代码将设置值,如果它不为空,即使'另一个值可能为空,
但是第二个代码会先检查所有值,所以如果其中一个值为空,它将永远不会创建Obj。
这是一个明确的选择, 如果您认为所有值都很重要且必要,那么请使用第二个代码,如果可以将另一个值保留为空并且想要更新任何非空值,那么使用第二个代码就没有意义了