【发布时间】:2014-11-21 02:50:15
【问题描述】:
var x=10;
var y=5;
解决方案 1
x= x + y
y= x - y
x= x - y
解决方案 2
x=y+x,y=x-y,x=x-y;
这两个解决方案彼此相等,但第二个解决方案更快,为什么?
谁能告诉我 JS 引擎为这两种解决方案生成的优化操作码?
【问题讨论】:
-
解决方案 1 和解决方案 2 是相同的代码。
-
当心你是否期望整数算术并且 x 和 y 是 v.large 数量级 - 因为 x + y 可能超出整数范围。
-
除此之外,速度可能取决于使用 += 和 -= 运算符(在 C 中曾经如此) x += y; y = x - y; x -= y;
-
正如预期的那样,一个更快的断言是完全错误的:jsperf.com/two-ways-of-swapping
-
不,这不是 stackoverflow.com/questions/16201656/… 的副本。实际上阅读上面的问题,它是关于优化的,为什么会比另一个更快。 (这是错误的,但不是重复的。)