好习惯从现在开始养成精要.pptx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
好习惯从现在开始养成精要

程序效率问题 好习惯从现在开始养成 控制语句 参数传递 循环语句 提高程序效率的几种情况 #includeiostream using namespace std; int main() { int score; cout请输入分数:endl; cinscore; if(score=90) cout得Aendl; else if(score=80score90) cout得Bendl; else if(score=70score80) cout得Cendl; else if(score=60score70) cout得Dendl; else cout得E(不及格)endl; return 0; } 控制语句 #includeiostream using namespace std; int main() { int score; cout请输入分数:endl; cinscore; score/=10; switch(score) { case 10: case 9: cout得Aendl;break; case 8: cout得Bendl;break; case 7: cout得Cendl;break; case 6: cout得Dendl;break; default: cout得E(不及格)endl;break; } return 0; } 大家分析一下,使用这两个程序来判断成绩等级有什么不同? 如果纯粹比较数字或字符,建议大家使用switch语句,因为他只会在一开始的switch括号中取出变量值一次,然后将这个值与下面所设定的case比较,但如果使用if,每次遇到条件式时,都要取出变量值,效率的差异就在这。 当然并不是使用if就不好,遇到符合条件时,switch就帮不上忙了,由于无法在switch中组合复杂的条件语句,这是旧的使用if了。 所以,总的来说,需要switch,if搭配着灵活使用。 值传递 址传递 下面看一下几种传递情况 参数传递 例: (判断两个字符串是否相等的函数) bool Compare(string s1,string s2) bool Compare(string *s1,string *s2) bool Compare(string s1,string s2) 大家看看这几行代码有什么差异 若使用第一个函数(值传递),则在参数传递和函数返回时,需要调用string的构造函数和析构函数两次(即共多调用了四个函数),而其他几个函数(指针传递和引用传递)则不需要调用这四个函数。因为指针和引用都不会创建新的对象。如果构造一个对象和析构一个对象的开销是庞大的,这就会对效率造成一定的影响。 但在很多人的眼中,指针或许会是一个恶梦,使用指针就意味着可能会出现错误,那么就使用引用吧!它既与使用普通值传递一样方便直观,同时又具有指针传递的高效和能力。 当我们在使用循环语句中,应当注意避免过大的循环。 大家看下面两段代码 ①for(int i=0;in;i++) ②for(int i=0;in;i++) { fun1(); fun1(); for(int i=0;in;i++)) fun2(); fun2(); } 循环语句 以代码的层面上来看,大家是不是觉得代码1的效率更高?因为毕竟代码1少了n次的自加运算和判断,毕竟自加运算和判断也是需要时间的。But,现实真的是这样吗? 这就要看fun1和fun2这两个函数的规模(也就是复杂性)了,如果这几个函数的代码语句很少,则代码1的运行效率高一些,但是若fun1和fun2的语句很多,规模较大,则代码2的运行效率会比代码1显著要高。可能大家不明白这是为什么,这要由计算机的硬件说起。 啊,这个天杀的计算机硬件问题我也不知道什么鬼,所以上网搜了一下,大家看看了解一下就好了。 由于CPU只能从内存在读取数据,而CPU的运算速度远远大于内存,所以为了提高程序的运行速度有效地利用CPU的能力,在内存与CPU之间有一个叫Cache的存储器,它的速度接近CPU。而Cache中的数据是从内存中加载而来的,这个过程需要访问内存,速度较慢。 这里先说说Cache的设计原理,就是时间局部性和空间局部性。时间局部性是指如果一个存储单元被访问,则可能该单元会很快被再次访问,这是因为程序存在着循环。空间局部性是指如果一个储存单元被访问,则该单元邻近的单元也可能很快被访问,这是因为程序中大部分指令是顺序存储、顺序执行的,数据也一般也是以向量、数组、树、表

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档