交换两个变量的值的效率的测试
交换两个值,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
交换两个变量的值的效率的测试相关推荐
- Python中有几种办法交换两个变量的值?
交换两个变量的值方法,这个面试题如果只写一种当然很简单,没什么可以说的.今天这个面试是问大家有几种办法来实现交换两个变量的值 .在没开始看具体答案前,你可以先想想看 . 下面分别来说说这几种方法: 1 ...
- 不使用第三变量交换两个变量的值
在 Java 中,经常会需要交换两个变量的值,我们一般是使用第三变量完成,比如 temp = a; a = b; b = temp; 这样的写法确实能达成目标,但因此而引入了第三变量,对资源的消耗增加 ...
- 不用临时变量,交换两个变量的值
不用临时变量,交换两个变量的值 a=a^b; b=a^b; a=a^b; 或者 a=a+b; b=a-b; a=a-b;
- 【剑指offer】不使用新变量,交换两个变量的值,C++实现
# 题目 不使用新变量,交换两个变量的值. # 思路 方法一:使用加减法操作,交换两个变量的值. A = A+B B = A-B A = A-B 方法二:使用异或运算,交换两个变量的值 A = A^B ...
- PHP中不用第三个变量交换两个变量的值
相信大家在PHP面试或者学习中经常会遇到这个问题就是"不用第三个变量来交换两个变量的值",今天正对这个问题来讨论一下: 第一种方法:首先会想到的 这种方法简单可行,顺利的交换了两个 ...
- C语言中的关键字,变量的定义,变量的命名规则,交换两个变量的值,驼峰命名法【 C语言变量名命名法则】
C语言结构 C语言中的关键字 变量 变量的定义 变量的命名规则 交换两个变量的值 驼峰命名法 C语言结构 上图中我们可以看到最外层是程序,内部是所有的构成,我们从最里面开始说明. 当我们用计算机语言来 ...
- 交换两个变量ab的值PHP,由[交换两个变量的值问题]理解程序的时空复杂度
由一个编程经典问题,交换两个变量的值入手,理解程序的时空复杂度(以下均使用PHP代码演示问题的解决方法)解决问题的方法一:1.方法文字描述:使用一个中间变量temp,实现两个变量值的互换2.实现的具体 ...
- 前端学习(623):交换两个变量的值
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- 用html5交换两个变量的值,Python判断两个对象相等的原理 python交换两个变量的值为什么不用中间变量...
python语言设计一个类代表花,其中含2个对象属性,2class flower: def __init__ (self, name, shape): self.name = name self.sh ...
最新文章
- 【人工智能】人类该如何看待人工智能的“诗与远方”?
- python 字符串,字符串运算,比较,索引,切片等
- 【JavaEE】WebService到底是什么?
- 利用python数据可视化_想用Python做数据可视化?先迈过这个“坎”
- how to verify that Listener is entry point of application
- mysql管理数据_MySQL 管理
- K2P路由器刷机和拨号上网
- Delphi官方网站资源
- 计算机管理可以全自动,这款全自动化的小工具,可以让你在父母面前光明正大得玩电脑啦...
- 德赛西威全球首发“Smart Solution”智能出行解决方案
- 2010最有趣牛人语录100句
- 【无标题】微信开发者工具无法获取OpenId
- java 1st 2nd 3rd 4th_为啥第一是1ST,第二是2ND,第三是3RD,第四开始都是TH呢1ST、2ND、...-3rd-英语-耿佬杜同学...
- 利用Filezilla在局域网内搭建自己的FTP服务器
- 给所有男人和女人的人生忠告
- 如何进行移动端的页面开发?
- C语言 求n的阶乘及阶乘和
- RNA核糖核酸修饰RNA-HiLyte FluorTM 405荧光染料|RNA-HiLyte FluorTM 405
- python如果获取windows管理员权限(二)
- [小黄书管理平台]登录服务的实现
热门文章
- 机器学习(十五)隐马尔科夫模型-未完待续
- mAP(mean Average Precision)应用(转)
- php mysql 单例模式_PHP基于单例模式实现的mysql类
- 复练-软考网规-两地三中心
- mysql5.715 安装在d盘_mysql5.7.15在windows环境下的安装设置图文详细教程
- 知识图谱运用于推荐系统
- 【2015蓝桥杯省赛】C++ B组试题
- 12-----存储过程
- Android—SDCard数据存取Environment简介
- 【转】从头说catalan数及笔试面试里那些相关的问题