简单的比较C语言下交换a,b数值的代码效率
来源:互联网 发布:mac百度云怎么分享链接 编辑:程序博客网 时间:2024/05/01 20:32
以下几个语句都能交换a,b的值
1)
a^=b^=a^=b;
2)
temp = a;a = b;b = temp;
3)
a = a^b;b = a^b;a = a^b;
效率为2) > 3) > 1)
验证代码如下:(linux下GCC和win下codeblocks通过编译)
#include <stdio.h>#include <sys/time.h>#include <unistd.h>void speed_1(){long i = 100000000;while(i){int a = 10;int b = 20;a^=b^=a^=b; i--;}}void speed_2(){long i = 100000000;int temp = 0;while(i){int a = 10;int b = 20;temp = a;a = b;b = temp;i--;}}void speed_3(){long i = 100000000;while(i) {int a = 10;int b = 20;a = a^b;b = a^b;a = a^b;i--;}}int main(void){struct timeval start;struct timeval end;unsigned long diff_1; //此处的1,2,3数字代表的代码与上面所列一致unsigned long diff_2;unsigned long diff_3; gettimeofday(&start, NULL); //gettimeofday()是C语言获得精确时间函数speed_1();gettimeofday(&end, NULL);diff_1 = 1000000 * (end.tv_sec - start.tv_sec) + end.tv_usec - start.tv_usec;gettimeofday(&start, NULL);speed_2();gettimeofday(&end, NULL);diff_2 = 1000000 * (end.tv_sec - start.tv_sec) + end.tv_usec - start.tv_usec;gettimeofday(&start, NULL);speed_3();gettimeofday(&end, NULL);diff_3 = 1000000 * (end.tv_sec - start.tv_sec) + end.tv_usec - start.tv_usec;printf("time_1 = %ld\n", diff_1);printf("time_2 = %ld\n", diff_2);printf("time_3 = %ld\n", diff_3);return 0;}
记得以前有人深入的分析过,我也不会,就简单的控制变量看下表面现象,看谁的效率更高些。
等以后在尝试从代码角度进行分析吧。
- 简单的比较C语言下交换a,b数值的代码效率
- 交换变量A,B的代码运行效率分析
- 交换数值的几种方法比较(a,b互换)
- C语言交换a和b的值
- IOS开发---C语言-②交换a、b的值
- 更高效率的a^b mod c
- 更高效率的A^B mod C
- 更高效率的a^b mod c
- 17-2 运用指针交换了a,b的地址,也就交换了a,b的数值
- c语言if-else的效率比较
- c语言交换两个数值的四种方法.
- C语言中交换两个变量数值的方法
- C语言交换两个变量数值的几种方法
- c语言swap(a,b)值交换的4种实现方…
- c语言swap(a,b)值交换的4种…
- 不借助第3个变量交换a和b的值(c语言)
- c语言swap(a,b)值交换的4种实现方法
- C 语言swap(a,b)值交换的几种实现方法
- 七夕夜、离别,涵情经河岸
- 第八章 流 08_PrintIO
- Linux C多线程编程
- 与文字相拥 舞尽人间芳华
- 中国知名IT企业的资料
- 简单的比较C语言下交换a,b数值的代码效率
- Intent 和 Intent Filter
- android spinner点击android.view.WindowManager$BadTokenException: Unable to add window token is not va
- struts多文件上传(1)
- 使用VAssistX为VS2008 c++代码添加函数头注释
- 运行mongoose的链接库问题
- 现在是双核时代了,两个人奋斗才叫生活!
- 利用Lucene制作搜索模块的思路及代码说明
- SWUN 调戏