我想交换两个整数,我想知道这两个实现中哪一个更快:
void swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
或者我相信大多数人都看过的XOR版本:
void swap(int* a, int* b)
{
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
第一个似乎使用了一个额外的寄存器,但第二个正在进行三次加载和存储,而第一个只进行两次加载和存储.谁能告诉我哪个更快,为什么?为什么更重要.