哪些代码在性能级别上成本更高
What code cost more at performance level
每个人都知道,如今的技术成本低廉,我们中的许多人并不真正关心它。所以,看看这段代码:
方法 #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);
}
}
在第一个示例中,我们创建对象并在 none 个值存在时保留,在第二个示例中,我们首先检查值是否存在且不为空,然后创建对象并设置值。从您的角度来看,哪一个是性能级别的最佳解决方案?你会在你的代码上写哪一个?
注:N不是无穷大
这取决于你想要什么,
如果第一个代码不为空,即使另一个值可能为空,第一个代码也会设置值,
但是第二个代码会首先检查所有的值,所以如果其中一个值是空的,它永远不会创建 Obj。
这是一个明确的选择,
如果您认为所有值都是重要且必要的,则使用第二个代码,如果可以将另一个值留空并想要更新任何非空值,则使用第二个代码没有意义
通常 而不是 像 empty()
或 isset()
这样的操作会浪费时间。相反,更高的内存使用率和内存泄漏往往会导致更多的 GC 操作,new()
执行初始化需要时间,I/O 操作会导致延迟,而 that 是你的地方应该做你的改进。
如果要详细讨论时间使用情况,可能会非常非常复杂:编译期间,运行时间,代码是否会 运行 等等。
每个人都知道,如今的技术成本低廉,我们中的许多人并不真正关心它。所以,看看这段代码:
方法 #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);
}
}
在第一个示例中,我们创建对象并在 none 个值存在时保留,在第二个示例中,我们首先检查值是否存在且不为空,然后创建对象并设置值。从您的角度来看,哪一个是性能级别的最佳解决方案?你会在你的代码上写哪一个?
注:N不是无穷大
这取决于你想要什么, 如果第一个代码不为空,即使另一个值可能为空,第一个代码也会设置值,
但是第二个代码会首先检查所有的值,所以如果其中一个值是空的,它永远不会创建 Obj。
这是一个明确的选择, 如果您认为所有值都是重要且必要的,则使用第二个代码,如果可以将另一个值留空并想要更新任何非空值,则使用第二个代码没有意义
通常 而不是 像 empty()
或 isset()
这样的操作会浪费时间。相反,更高的内存使用率和内存泄漏往往会导致更多的 GC 操作,new()
执行初始化需要时间,I/O 操作会导致延迟,而 that 是你的地方应该做你的改进。
如果要详细讨论时间使用情况,可能会非常非常复杂:编译期间,运行时间,代码是否会 运行 等等。