交换两个值,swap。。。比如a=1,b=2;交换结果a=2,b=1;

代码1:

int main(){int n=1000000000;int a=10;int b=100;while(n-->0){a^=b;b^=a;a^=b;}return 0;}

代码2:

int main(){int n=1000000000;int a=10;int b=100;int c;while(n-->0){c=a;a=b;b=c;}return 0;}

编译器gcc49,代码没有优化汇编代码如下:

汇编代码1:

_main:
LFB0:pushq  %rbp
LCFI0:movq  %rsp, %rbp
LCFI1:movl  $1000000000, -4(%rbp)movl   $10, -8(%rbp)movl   $100, -12(%rbp)jmp  L2
L3:movl -12(%rbp), %eaxxorl %eax, -8(%rbp)movl  -8(%rbp), %eaxxorl  %eax, -12(%rbp)movl -12(%rbp), %eaxxorl %eax, -8(%rbp)
L2:movl -4(%rbp), %eaxleal  -1(%rax), %edxmovl  %edx, -4(%rbp)testl %eax, %eaxjg    L3movl  $0, %eaxpopq    %rbp
LCFI2:ret

汇编代码2:

_main:
LFB0:pushq  %rbp
LCFI0:movq  %rsp, %rbp
LCFI1:movl  $1000000000, -4(%rbp)movl   $10, -8(%rbp)movl   $100, -12(%rbp)jmp  L2
L3:movl -8(%rbp), %eaxmovl  %eax, -16(%rbp)movl -12(%rbp), %eaxmovl %eax, -8(%rbp)movl  -16(%rbp), %eaxmovl %eax, -12(%rbp)
L2:movl -4(%rbp), %eaxleal  -1(%rax), %edxmovl  %edx, -4(%rbp)testl %eax, %eaxjg    L3movl  $0, %eaxpopq    %rbp
LCFI2:ret

执行时间:

a为swap1,b为swap2

转载于:https://www.cnblogs.com/face2ai/p/9756730.html

交换两个变量的值的效率的测试相关推荐

  1. Python中有几种办法交换两个变量的值?

    交换两个变量的值方法,这个面试题如果只写一种当然很简单,没什么可以说的.今天这个面试是问大家有几种办法来实现交换两个变量的值 .在没开始看具体答案前,你可以先想想看 . 下面分别来说说这几种方法: 1 ...

  2. 不使用第三变量交换两个变量的值

    在 Java 中,经常会需要交换两个变量的值,我们一般是使用第三变量完成,比如 temp = a; a = b; b = temp; 这样的写法确实能达成目标,但因此而引入了第三变量,对资源的消耗增加 ...

  3. 不用临时变量,交换两个变量的值

    不用临时变量,交换两个变量的值 a=a^b;     b=a^b;     a=a^b; 或者   a=a+b;     b=a-b;     a=a-b;

  4. 【剑指offer】不使用新变量,交换两个变量的值,C++实现

    # 题目 不使用新变量,交换两个变量的值. # 思路 方法一:使用加减法操作,交换两个变量的值. A = A+B B = A-B A = A-B 方法二:使用异或运算,交换两个变量的值 A = A^B ...

  5. PHP中不用第三个变量交换两个变量的值

    相信大家在PHP面试或者学习中经常会遇到这个问题就是"不用第三个变量来交换两个变量的值",今天正对这个问题来讨论一下: 第一种方法:首先会想到的 这种方法简单可行,顺利的交换了两个 ...

  6. C语言中的关键字,变量的定义,变量的命名规则,交换两个变量的值,驼峰命名法【 C语言变量名命名法则】

    C语言结构 C语言中的关键字 变量 变量的定义 变量的命名规则 交换两个变量的值 驼峰命名法 C语言结构 上图中我们可以看到最外层是程序,内部是所有的构成,我们从最里面开始说明. 当我们用计算机语言来 ...

  7. 交换两个变量ab的值PHP,由[交换两个变量的值问题]理解程序的时空复杂度

    由一个编程经典问题,交换两个变量的值入手,理解程序的时空复杂度(以下均使用PHP代码演示问题的解决方法)解决问题的方法一:1.方法文字描述:使用一个中间变量temp,实现两个变量值的互换2.实现的具体 ...

  8. 前端学习(623):交换两个变量的值

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  9. 用html5交换两个变量的值,Python判断两个对象相等的原理 python交换两个变量的值为什么不用中间变量...

    python语言设计一个类代表花,其中含2个对象属性,2class flower: def __init__ (self, name, shape): self.name = name self.sh ...

最新文章

  1. 【人工智能】人类该如何看待人工智能的“诗与远方”?
  2. python 字符串,字符串运算,比较,索引,切片等
  3. 【JavaEE】WebService到底是什么?
  4. 利用python数据可视化_想用Python做数据可视化?先迈过这个“坎”
  5. how to verify that Listener is entry point of application
  6. mysql管理数据_MySQL 管理
  7. K2P路由器刷机和拨号上网
  8. Delphi官方网站资源
  9. 计算机管理可以全自动,这款全自动化的小工具,可以让你在父母面前光明正大得玩电脑啦...
  10. 德赛西威全球首发“Smart Solution”智能出行解决方案
  11. 2010最有趣牛人语录100句
  12. 【无标题】微信开发者工具无法获取OpenId
  13. java 1st 2nd 3rd 4th_为啥第一是1ST,第二是2ND,第三是3RD,第四开始都是TH呢1ST、2ND、...-3rd-英语-耿佬杜同学...
  14. 利用Filezilla在局域网内搭建自己的FTP服务器
  15. 给所有男人和女人的人生忠告
  16. 如何进行移动端的页面开发?
  17. C语言 求n的阶乘及阶乘和
  18. RNA核糖核酸修饰RNA-HiLyte FluorTM 405荧光染料|RNA-HiLyte FluorTM 405
  19. python如果获取windows管理员权限(二)
  20. [小黄书管理平台]登录服务的实现

热门文章

  1. 机器学习(十五)隐马尔科夫模型-未完待续
  2. mAP(mean Average Precision)应用(转)
  3. php mysql 单例模式_PHP基于单例模式实现的mysql类
  4. 复练-软考网规-两地三中心
  5. mysql5.715 安装在d盘_mysql5.7.15在windows环境下的安装设置图文详细教程
  6. 知识图谱运用于推荐系统
  7. 【2015蓝桥杯省赛】C++ B组试题
  8. 12-----存储过程
  9. Android—SDCard数据存取Environment简介
  10. 【转】从头说catalan数及笔试面试里那些相关的问题