PHP手册指出:
将3添加到$a的当前值可以写入“$a += 3”。这意味着“获取$a的值,将其添加到3中,并将其重新分配到$a中”。不仅更短、更清晰,而且执行速度也更快。
我曾经认为$a += 3只是$a = $a + 3的语法糖,因此它们在所有方面都应该是平等的。
为什么$a += 3比$a = $a + 3更快地执行?
发布于 2013-07-05 16:22:02
$a = $a + 3在临时内存空间中将3添加到$a中,然后将结果分配给$a;而$a += 3直接将3添加到$a;因此,区别是用于临时存储的内存字节数,加上赋值。
发布于 2013-07-05 17:21:37
PHP是一个解释器,因此,为了使好的代码具有良好的性能,它必须将自己限制为不要做“有效”的复杂操作(编译器可以这样做,因为它们有时间)。
从时间上看,拥有=+比它的等价和更好,因为它使用的资源更少。
在PHP的例子中,它将=+标记为T_PLUS_EQUAL,这也是最好通过PHP可执行文件执行的,另一方面,sum,嗯,它被标记(并执行),就像sum一样。
跟随两个token_get_all()的“转储”
<?php echo '<pre>';
print_r(array_map(function($t){if(is_array($t)) $t[0]=token_name($t[0]); return $t;},
token_get_all('<?php $a=$a+3 ?>')));
print_r(array_map(function($t){if(is_array($t)) $t[0]=token_name($t[0]); return $t;},
token_get_all('<?php $a+=3 ?>')));
// results in:
?>
Array
(
[0] => Array
(
[0] => T_OPEN_TAG
[1] => 1
)
[1] => Array
(
[0] => T_VARIABLE
[1] => $a
[2] => 1
)
[2] => =
[3] => Array
(
[0] => T_VARIABLE
[1] => $a
[2] => 1
)
[4] => +
[5] => Array
(
[0] => T_LNUMBER
[1] => 3
[2] => 1
)
[6] => Array
(
[0] => T_WHITESPACE
[1] =>
[2] => 1
)
[7] => Array
(
[0] => T_CLOSE_TAG
[1] => ?>
[2] => 1
)
)
Array
(
[0] => Array
(
[0] => T_OPEN_TAG
[1] => 1
)
[1] => Array
(
[0] => T_VARIABLE
[1] => $a
[2] => 1
)
[2] => Array
(
[0] => T_PLUS_EQUAL /// <= see here!!!!!
[1] => +=
[2] => 1
)
[3] => Array
(
[0] => T_LNUMBER
[1] => 3
[2] => 1
)
[4] => Array
(
[0] => T_WHITESPACE
[1] =>
[2] => 1
)
[5] => Array
(
[0] => T_CLOSE_TAG
[1] => ?>
[2] => 1
)
)发布于 2013-07-05 16:23:01
$a = $a + 3 可以在PHP 中使用临时变量。而$a += 3 可能直接执行。
PS:我强调的是力量。非常不确定..。
它可能类似于C++的:++i和i++ :)
https://stackoverflow.com/questions/17493164
复制相似问题