C++数据交换速度测试(按位异或vs普通交换):

来源:互联网 发布:太阁立志传5 町数据 编辑:程序博客网 时间:2024/05/20 06:30

普通交换法

这种方法的原理是搬运

include <iostream>  using namespace std;  int main()  {      int a = 7;      int b = 4;      int t;      for (int i = 0;i<1000000000;i++)      {          t = a;          a = b;          b = t;      }      return 0;  }

2.996s

按位异或交换法

这种方法的原理是一个数按位异或他自己等于0,一个数按位异或0等于他自己。

#include <iostream>  using namespace std;  int main()  {      int a = 7;      int b = 4;      int t;      for (int i = 0;i<1000000000;i++)      {          a = a^b;          b = a^b;          a = a^b;      }      return 0;  }

7.247s

结论

虽然第二种方法很有灵性,但是速度上却很瓜皮。
当操作大数据时,例如图数据,计算量可能不止十个亿,那么我们要选择更快的方法,而不要追求帅气。

1 0