【发布时间】:2017-08-07 11:14:13
【问题描述】:
我试图找出按位运算符 XOR 和变量交换的简单算术逻辑之间的速度差异。我写了一个简单的程序:-
for(long i=0; i<1500000; i++){
a=a+b;
b=a-b;
a=a-b;
}
而对于异或,它是
for(long i=0; i<1500000; i++){
a=a^b;
b=a^b;
a=a^b;
}
我认为按位运算符会更快,因为它只使用两个门,但事实证明,算术逻辑实际上更快一点,如果你为交换取一个单独的变量,时间几乎是一半其他两个。谁能解释一下这是怎么回事。
【问题讨论】:
-
这当然取决于您使用的编程语言。
-
现代处理器远比几个逻辑门复杂得多。此外,可靠地测量性能比编写循环和计时要复杂得多。您应该阅读一些有关微基准的主题以及为什么它们比您预期的更难正确。
标签: performance time execution