- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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的设计原理,就是时间局部性和空间局部性。时间局部性是指如果一个存储单元被访问,则可能该单元会很快被再次访问,这是因为程序存在着循环。空间局部性是指如果一个储存单元被访问,则该单元邻近的单元也可能很快被访问,这是因为程序中大部分指令是顺序存储、顺序执行的,数据也一般也是以向量、数组、树、表
您可能关注的文档
- Java网络解读.ppt
- Java课件第三讲-数据类型变量与表达式解读.ppt
- Java面向对象程序设计第10章_图形界面2解读.ppt
- 女性生殖系统精要.ppt
- java网络编程第5章解读.ppt
- 新生必备基础攻略一分钟帮你你的三亚城市职业学院讲述.docx
- 新的安庆1讲述.ppt
- Jquery-常用函数解读.doc
- JQR整体介绍解读.ppt
- JCI医院评审标准解读.ppt
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
文档评论(0)