对交换函数的测试

今天做USACO的时候需要写一个交换函数

脑子里很快出现了三种写法:

方法一:临时变量
inline void swap3(int& a,int& b)
{
 int tmp;
 tmp=a;
 a=b;
 b=tmp;
}

方法二:加减法
inline void swap2(int& a,int& b)
{
     a = a+b;
     b = a-b;
     a = a-b;
}

方法三:诡异的位运算
inline void swap1(int& a,int& b)
{
     a = a^b;
     b = a^b;
     a = a^b;
}

(你:我看不懂...)
(我:我也看不懂...)

对三种写法评测,方法是调用每个一亿次

结果如下:

第一种:687ms
第二种:1029ms
第三种:1014ms

结论不言而喻...看来位运算不是全能的...

At last:看来我机器性能不赖...不调用一亿次根本看不出太大的差异...下次超超频?
伟大的Intel,伟大的扣肉E6550...

1 Response to “对交换函数的测试”


  1. 1 dping_meng

    据我测试
    PASCAL 位运算那个快于前两种

Leave a Reply