调试与优化的理解与总结.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
调试与优化的理解与总结

2014-2015调试与优化期末大作业 对调试与优化的理解与认识 学院:软件学院 专业:软件工程 班级:13移动一班 姓名:小捕快 指导老师:许豪 目录 一、 调试与优化的概念 3 1、 对调试的概念 3 2、优化的概念 3 二、调试与优化的原则 3 1、调试的原则 3 2、优化的原则 3 三、优化的具体方法 4 1 确定浮点型变量和表达式是 float 型 4 2 使用32位的数据类型 4 3 明智使用有符号整型变量 4 4 while VS. for 5 5 使用数组型代替指针型 5 6 充分分解小的循环 5 8 Switch 的用法 5 9 所有函数都应该有原型定义 5 10 尽可能使用常量(const) 6 11 提升循环的性能 6 13 考虑动态内存分配 6 14 使用显式的并行代码 6 15 提出公共子表达式 6 四、调试的步骤 7 1、静态调试 7 2、动态调试 7 (1)观察程序的运行情况 7 (2)设置断点 8 (3)设置监视 8 五、 调试心得 8 六、 参考文献 9 1、 《嵌入式软件调试技术》 9 2、《嵌入式linux内存使用与性能优化》 9 调试与优化的概念 对调试的概念 程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性的必不可少的步骤。编完计算机程序,必须送入计算机中测试。中间代码(如四元式代码),也可以是目标代码。等价的含义是使得变换后的代码运行结果与变换前代码运行结果相同。优化的含义是最终生成的目标代码短(运行时间更短、占用空间更小),时空效率优化。原则上,优化可以在编译的各个阶段进行,但最主要的一类是对中间代码进行优化,这类优化不依赖于具体的计算机。 2、优化的原则 (1)用头脑去分析思考与错误征兆有关的信息。 (2)避开死胡同。 (3)只把调试工具当做手段。利用调试工具,可以帮助思考,但不能代替思考,因为调试工具给的是一种无规律的调试方法。 (4)避免用试探法,最多只能把它当做最后手段。 (5)再出现错误的地方,可能还有别的错误。 (6)修改错误的一个常见失误是只修改了这个错误的征兆或这个错误的表现,而没有修改错误本身。如果提出的修改不能解释与这个错误有关的全部线索,那就表明只修改了错误的一部分。 (7)注意修正一个错误的同时可能会引入新的错误。 (8)修改错误的过程将迫使人们暂时回到程序设计阶段。修改错误也是程序设计的一种形式。 (9)修改源代码程序,不要改变目标代码。 三、优化的具体方法 1 确定浮点型变量和表达式是 float 型 为了让编译器产生更好的代码(比如说产生3DNow! 或SSE指令的代码),必须确定浮点型变量和表达式是 float 型的。要特别注意的是,以 F 或 f 为后缀(比如:3.14f)的浮点常量才是 float 型,否则默认是 double 型。为了避免 float 型参数自动转化为 double,请在函数声明时使用 float。 2 使用32位的数据类型 编译器有很多种,但它们都包含的典型的32位类型是:int,signed,signed int,unsigned,unsigned int,long,signed long,long int,signed long int,unsigned long,unsigned long int。尽量使用32位的数据类型,因为它们比16位的数据甚至8位的数据更有效率。 3 明智使用有符号整型变量 在很多情况下,你需要考虑整型变量是有符号还是无符号类型的。比如,保存一个人的体重数据时不可能出现负数,所以不需要使用有符号类型。但是,如果是要保存温度数据,就必须使用到有符号的变量。 在许多地方,考虑是否使用有符号的变量是必要的。在一些情况下,有符号的运算比较快;但在一些情况下却相反。 比如:整型到浮点转化时,使用大于16位的有符号整型比较快。因为x86构架中提供了从有符号整型转化到浮点型的指令,但没有提供从无符号整型转化到浮点的指令。看看编译器产生的汇编代码: 在整数运算中计算商和余数时,使用无符号类型比较快。以下这段典型的代码是编译器产生的32位整型数除以4的代码: 4 while VS. for 在编程中,我们常常需要用到无限循环,常用的两种方法是while (1) 和 for (;;)。 这两种方法效果完全一样,但那一种更好呢? for (;;)指令少,不占用寄存器,而且没有判断跳转,比while (1)好。 5 使用数组型代替指针型 使用指针会使编译器很难优化它。因为缺乏有效的指针代码优化的方法,编译器总是假设指针可以访问内存的任意地方,包括分配给其他变量的储存

文档评论(0)

peain + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档