Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 条件赋值有什么不同吗?_Php_Performance_Conditional - Fatal编程技术网

Php 条件赋值有什么不同吗?

Php 条件赋值有什么不同吗?,php,performance,conditional,Php,Performance,Conditional,以下两种方法之间是否存在任何性能差异(特别是速度或内存) $foo = false; for ($i = 0; $i < 100; $i++) { if ($i % 5 === 0) { $foo = true; } } $foo=false; 对于($i=0;$i

以下两种方法之间是否存在任何性能差异(特别是速度或内存)

$foo = false;
for ($i = 0; $i < 100; $i++) {
    if ($i % 5 === 0) {
        $foo = true;
    }
}
$foo=false;
对于($i=0;$i<100;$i++){
如果($i%5==0){
$foo=true;
}
}
vs

$foo=false;
对于($i=0;$i<100;$i++){
$foo=$i%5==0;
}

这是一个抽象的示例,但虽然我更喜欢后者更简洁的语法,但我不确定常量赋值是否会影响性能?

如果有,则差异将非常小,您永远不会注意到。就选你喜欢的吧。在你有明确的理由之前不要开始微优化。此外,应用程序的其他部分很可能更为重要。不要为了一纳秒的“性能”而选择。选择哪个变体更容易被其他人阅读和理解,这是99.99999%的用例中真正重要的性能指标。我不明白为什么你不能自己对其进行基准测试并找出答案。不过,您至少需要1000000次迭代才能看到一致的差异。您将通过
++$i
而不是@DanFromGermany所说的
$i++
获得更高的性能。如果您选择后者,那么至少用括号使其不那么神秘:
$foo=($i%5==0)顺便说一下,您的两个脚本做的不一样,它们的行为完全不同;-)第二个值每次都会覆盖该值,第一个值仅在if条件匹配的情况下才覆盖。如果条件匹配,则差异非常小,您永远不会注意到。就选你喜欢的吧。在你有明确的理由之前不要开始微优化。此外,应用程序的其他部分很可能更为重要。不要为了一纳秒的“性能”而选择。选择哪个变体更容易被其他人阅读和理解,这是99.99999%的用例中真正重要的性能指标。我不明白为什么你不能自己对其进行基准测试并找出答案。不过,您至少需要1000000次迭代才能看到一致的差异。您将通过
++$i
而不是@DanFromGermany所说的
$i++
获得更高的性能。如果您选择后者,那么至少用括号使其不那么神秘:
$foo=($i%5==0)顺便说一下,您的两个脚本做的不一样,它们的行为完全不同;-)第二个每次都覆盖该值,第一个仅在if条件匹配时覆盖。
$foo = false;
for ($i = 0; $i < 100; $i++) {
    $foo = $i % 5 === 0;
}