


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、提高C程序运行效率1、选择合适的算法和数据结构应当熟识算法语言,知道各种算法的优缺点,详细资料请参见相应的参考资料,有许 多计算机书籍上都有介绍。将比拟慢的挨次查找法用较快的二分查找或乱序查找法代替, 插入排序或冒泡排序法用快速排序、合并排序或根排序代替,都可以大大提高程序执行的 效率。.选择一种合适的数据结构也很重要,比方你在一堆随机存放的数中使用了大量的插 入和删除指令,那使用链表要快得多。数组与指针语句具有特别密码的关系,一般来说,指针比拟敏捷简洁,而数组那么比拟 直观,简单理解。对于大局部的编译器,使用指针比使用数组生成的代码更短,执行效率 更高。但是在Keil中那么相反,使用数组比使
2、用的指针生成的代码更短。3、使用完量小的数据类型能够使用字符型(char)定义的变量,就不要使用整型(int)变量来定义;能够使用整型变 量定义的变量就不耍用长整型(long int),能不使用浮点型(float)变量就不要使用浮点型变 量。当然,在定义变量后不要超过变量的作用范围,假如超过变量的范围赋值,C编译器 并不报错,但程序运行结果却错了,而且这样的错误很难觉察。在ICCAVR中,可以在Options中设定使用printf参数,尽量使用基本型参数 (%c、d、x、X、%u和$格式说明符),少用长整型参数(出、lu、%lx和区 格 式说明符),至于浮点型的参数(f)那么尽量不要使用,其它
3、C编译器也一样。在其它条件不 变的状况下,使用f参数,会使生成的代码的数量增加许多,执行速度降低。4、使用自加、自减指令通常使用自加、自减指令和复合赋值表达式(如a-1及a+=l等)都能够生成高质量的 程序代码,编译器通常都能够生成inc和dec之类的指令,而使用a=a+l或a=a-l之类的指 令,有许多C编译器都会生成二到三个字节的指令。在AVR单片适用的ICCAVR、GCCAVR、 IAR等C编译器以上几种书写方式生成的代码是一样的,也能够生成高质量的inc和dec 之类的的代码。5、削减运算的强度可以使用运算量小但功能相同的表达式替换原来简单的的表达式。如下:(1)、求余运算。a=a%8
4、;可以改为:a=a&7;说明:位操作只需一个指令周期即可完成,而大局部的C编译器的“”运算均是调 用子程序来完成,代码长、执行速度慢。通常,只要求是求2n方的余数,均可使用位操作 的方法来代替。(2)、平方运算a=pow(a,2.0);可以改为: a=a*a;说明:在有内置硬件乘法器的单片机中(如51系列),乘法运算比求平方运算快得多, 由于浮点数的求平方是通过调用子程序来实现的,在自带硬件乘法器的AVR单片机中,如 ATMegal63中,乘法运算只需2个时钟周期就可以完成。既使是在没有内置硬件乘法器的 AVR单片机中,乘法运算的子程序比平方运算的子程序代码短,执行速度快。假如是求3次方,如:
5、a=pow(a,3.0);更改为:a=a*a*a;那么效率的改善更明显。(3)、用移位实现乘除法运算a = a*4;b=b/4;可以改为:a=a2;b=b2;说明:通常假如需要乘以或除以2n,都可以用移位的方法代替。在ICCAVR中,假如 乘以2n,都可以生成左移的代码,而乘以其它的整数或除以任何数,均调用乘除法子程序。 用移位的方法得到代码比调用乘除法子程序生成的代码效率高。实际上,只要是乘以或除 以一个整数,均可以用移位的方法得到结果,如: a=a*9可以改为: a=(a3)+a6、循环(1)、循环语句对于一些不需要循环变量参与运算的任务可以把它们放到循环外面,这里的任务包括 表达式、函数
6、的调用、指针运算、数组访问等,应当将没有必要执行屡次的操作全部集合 在一起,放到一个init的初始化程序中进行。(2)、延时函数:通常使用的延时函数均采纳自加的形式:void delay (void)(unsigned int i;for (i=0;i0;i-)两个函数的延时效果相像,但儿乎全部的C编译对后一种函数生成的代码均比前一种 代码少13个字节,由于几乎全部的MCU均有为0转移的指令,采纳后一种方式能够生 成这类指令。在使用while循环时也一样,使用自减指令掌握循环会比使用自加指令掌握循环生成 的代码更少13个字母。但是在循环中有通过循环变量“i”读写数组的指令时,使用预减循环时有可能使数组 超界,要引起留意。(3)while循环和dowhile循环用while循环时有以下两种循环形式:unsigned int i;i=0;while (i0);在这两种循环中,使用do-while循环编译后生成的代码的长度短于while循环。7、查表在程序中一般不进行特别简单的运算,如浮点数的乘除及开方等,以及一些简单的数 学模型的插补运算,对这些即消耗时间又消费资源的运算,应尽
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 37507-2025项目、项目群和项目组合管理项目管理指南
- 大班体育《好玩的桌子》教学设计
- 项目干系人参与的最佳实践试题及答案
- 常见微生物检验方法与答案
- 向着目标证券从业资格试题及答案
- 股票市场财报分析考题及答案
- 医院人力资源管理探索与改进计划
- 品牌文化在战略中的角色与价值计划
- 企业社会责任与人事战略的结合计划
- 项目预判与策划相关考题及答案
- 社会主义核心价值观与中华传统文化
- 4M1E确认检查表模板
- 漏电保护器日常检查记录表
- 华为WLAN培训资料课件
- 干眼(症)诊治基础知识考试试题及答案
- 2021-2022学年高二下学期英语读后续写公开课课件:continuation writing-receiving and giving课件
- 2023年初中数学竞赛试题中国教育学会中学数学教学专业委员会数学周报杯
- 第七章流域水环境规划课件
- 房建工程样板策划及实施方案
- 二年级数学生活中的推理-完整版PPT
- 《环境生态学导论(第二版)》课件第二章 生物与环境
评论
0/150
提交评论