我想交换两个整数,我想知道这两个实现中的哪一个会更快:使用临时变量的显而易见的方法:
void swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
Run Code Online (Sandbox Code Playgroud)
或者我确定大多数人看过的xor版本:
void swap(int* a, int* b)
{
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
Run Code Online (Sandbox Code Playgroud)
看起来第一个使用额外的寄存器,但第二个使用三个加载和存储,而第一个只执行两个.有人能告诉我哪个更快,为什么?为什么更重要.