【发布时间】:2013-11-08 19:56:58
【问题描述】:
假设我有 2 个变量。
x = 1
y = 2
最终结果应该是:
x = 2
y = 1
我想到了以下方法:
temp = x // clone x
x = y
y = temp
或(异或交换)
x = x XOR y
y = x XOR y
x = y XOR x
我想得到有关低级内存等的答案...
最快的方法是什么?
注意:
我想得到一个奖励答案,假设没有副作用(代码,cpu),这是最快的,还是有其他更快的?
【问题讨论】:
-
这取决于很多事情,我怀疑是否有明确的答案。
-
任何没有测量的答案都是错误的。答案还取决于周围的代码和架构。
-
最快的交换方式是不交换。相反,将寄存器分配交换给变量。例如,如果
x在r0中,而y在r1中,则“在”您说x在r1中和y在r0中的交换之后。这并不总是一种选择,但当它出现时,它是无与伦比的,因为它实际上需要零时间,实际上什么都没有发生,这只是解释。 -
这听起来像是他试图优化的 XY 问题。
标签: performance memory copy cpu-registers