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引擎为这两种解决方案生成的优化操作码吗?
答案 0 :(得分:0)
好吧,在Ecmascript 6中你可以这样做:
var x=10;
var y=5;
[x,y] = [y,x]
console.log(x,y) // 5, 10
如果没有,这已经是一个好方法:How to swap two variables in JavaScript
对于你所拥有的两种方法,怀疑它们是不同的,你应该首先尝试检查多次测试是否存在很大的时间差异
答案 1 :(得分:0)
对于任一解决方案或使用XOR,我都无法找到任何有意义的性能差异。非测试中的非常快,所以我认为问题的前提是不正确的。
JSLitmus.test('Solution1', function() {
var x = 10;
var y = 5;
x = x + y;
y = x - y;
x = x - y;
});
JSLitmus.test('Solution2', function() {
var x = 10;
var y = 5;
x = y + x, y = x - y, x = x - y;
});
JSLitmus.test('Solution3', function() {
var x = 10;
var y = 5;
x ^= y;
y ^= x;
x ^= y;
});