Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.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 为什么x=x+;1比x慢+;=1._Php_Performance_Increment - Fatal编程技术网

Php 为什么x=x+;1比x慢+;=1.

Php 为什么x=x+;1比x慢+;=1.,php,performance,increment,Php,Performance,Increment,我是一名PHP程序员。我总是喜欢使用x+=1而不是x=x+1 但我仍然不明白为什么人们说执行x+=1比x=x+1快 (编辑注释:这个问题最初没有指定PHP,因此,关于C++编译器的注释和答案)< P> += 是所谓的。这对开发人员来说是一种方便。这两个语句在逻辑和性能方面应该具有相同的结果。+=就是所谓的。这对开发人员来说是一种方便。这两条语句在逻辑和性能方面应该有相同的结果。体面的编译器会接受这一点 x = x +1 x += 1 x++ 为了保持一致,最终编译相同的代码,因此不会产生任何

我是一名PHP程序员。我总是喜欢使用
x+=1而不是
x=x+1

但我仍然不明白为什么人们说执行
x+=1
x=x+1快


(编辑注释:这个问题最初没有指定PHP,因此,关于C++编译器的注释和答案)

< P> <代码> += 是所谓的。这对开发人员来说是一种方便。这两个语句在逻辑和性能方面应该具有相同的结果。

+=
就是所谓的。这对开发人员来说是一种方便。这两条语句在逻辑和性能方面应该有相同的结果。

体面的编译器会接受这一点

x = x +1
x += 1
x++

为了保持一致,最终编译相同的代码,因此不会产生任何差异。

体面的编译器会接受这一点

x = x +1
x += 1
x++
为了保持一致,最终编译相同的代码,因此不会提供任何差异。

将向您显示答案

$x+=1被解释为分配\添加

$x=$x+1具有单独的添加和分配操作,并使用临时变量

操作码越少,运行速度就越快(在大多数情况下)

请注意,如果启用带有代码优化的opcache,
$x=$x+1将优化为使用分配添加。

将显示答案

$x+=1被解释为分配\添加

$x=$x+1具有单独的添加和分配操作,并使用临时变量

操作码越少,运行速度就越快(在大多数情况下)


请注意,如果启用带有代码优化的opcache,
$x=$x+1将被优化使用BoojyAddio.< /P>谁告诉你有性能上的差别?这取决于CopelILL差异,如果有的话,取决于语言(许多语言把它们当作同义词,但是BOT全部)-并且实现这样的…如果这是C++,那么所有的赌注都被关闭了。你可以让操作符超负荷去做任何你想做的事情,包括控制阅读器。@Amit,在许多与性能和最佳编程实践相关的线程中。谁告诉过你有性能差异?这取决于编译器的差异,如果有的话,取决于语言(许多语言将它们视为同义词,但不是全部)和实现这样的…如果这是C++,那么所有的赌注都被关闭了。你可以重载操作符去做任何你想做的事情,包括拖拽阅读器。@Amit,在许多与性能和编程最佳实践相关的线程中。但是如果x是一个对象呢?如果语言和开发人员没有做任何太可疑的事,
x+=y
x=x+y
应该做同样的事情。我确信有些语言可能违反这一点。但是如果x是一个对象呢?如果语言和开发人员没有做任何太可疑的事情,
x+=y
x=x+y
应该做同样的事情。我确信有些语言可能会违反这一点。但是如果x是一个对象呢?@ikegami如果x是一个对象,无论是谁实现了它,使得
x=x+1
在x中的值与
x+=1
不同,而两者都是“合法操作”,然后:A。我会觉得这是一个可怕的设计决定。B.这不再是性能问题,因此与问题无关。如果结果相同,而性能不一样,那么我可以放心地说存在实现缺陷。但是如果x是一个对象呢?@ikegami如果x是一个对象,那么无论是谁实现了它,使得
x=x+1
在x中的值与
x+=1
不同,而两者都是“合法操作”,然后:A。我会觉得这是一个可怕的设计决定。B.这不再是性能问题,因此与问题无关。如果结果相同,而性能不一样,那么我可以放心地说存在实现缺陷。