【问题标题】:Are there any performance benefits when using x += 1 instead of x = x+1?使用 x += 1 而不是 x = x+1 时是否有任何性能优势?
【发布时间】:2013-07-03 17:46:38
【问题描述】:

我很困惑是否建议使用x += 1x = x+1。我知道它们都产生相同的结果。实际上,使用x+=1 而不是x = x+1 是否有任何性能提升?它会让我的程序运行得更快吗?

【问题讨论】:

  • 你没有指定一种语言,这使得这个问题无法回答,除了“首先关注可读性”这几乎是普遍的......
  • 如果你的程序运行太慢是因为你添加了一个错误的方法,那么你就会遇到更大的问题。无论您如何完成它,添加一个都应该永远成为瓶颈。
  • @abelenky - 如果x 是字符串,则添加x=x+1 可以成为瓶颈:-)

标签: actionscript-3 micro-optimization


【解决方案1】:

x += 1 只是x = x + 1 的语法快捷方式。 AFAIK,没有机器(CPU)级指令集有指令在单个原子操作中执行x += 1。 CPU 执行的实际代码应该是相同的。

【讨论】:

  • Erm x86 上的INC 怎么样? :P
  • x86 INC 指令不是原子的。如果你运行INC DWORD PTR [ EAX ],低级分解看起来更像:uOp.load tmp_reg, [ EAX ] uOp.inc tmp_reg uOp.store [ EAX ], tmp_reg ,因此不会自动执行。显然,从常识来看,读取当前值并对其加 1 是两个独立的过程。
【解决方案2】:

任何好的编译器都应该为这两个表达式提供相同的机器代码。

【讨论】:

  • 最终,是的,他们都是。除了与其内部指令集匹配的代码外,任何 CPU 都无法执行任何操作。也许有时中间机器语言版本可能会被跳过,但最终它必须被转换成(我应该怎么称呼它?汇编?) - 与 CPU 指令集一对一匹配的东西。
猜你喜欢
  • 2016-10-20
  • 2011-11-20
  • 1970-01-01
  • 2013-01-09
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-21
相关资源
最近更新 更多