相关疑难解决方法(0)

在C中交换值的最快方法是什么?

我想交换两个整数,我想知道这两个实现中的哪一个会更快:使用临时变量的显而易见的方法:

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)

看起来第一个使用额外的寄存器,但第二个使用三个加载和存储,而第一个只执行两个.有人能告诉我哪个更快,为什么?为什么更重要.

c performance

53
推荐指数
10
解决办法
5万
查看次数

标签 统计

c ×1

performance ×1