欢迎来到天天文库
浏览记录
ID:39305493
大小:215.26 KB
页数:43页
时间:2019-06-30
《C++程序设计教程(I)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++程序设计教程(第二版)第六章性能Chapter6Performance清华大学出版社钱能7/15/20211提高性能的意义:性能对提高编程能力举足轻重如何提高性能?以合理使用资源为前提,尽快完成任务的能力称为效率.效率影响性能,提高效率就能提高性能学习目标:1.扩展视野,对同一问题的不同要求,模仿各种编程技巧与空间布局策略,予以应对.从而对各种不同的问题,亦能应变自如2.掌握测试性能的方法,学会测算时/空交换的代价,客观评估自身的编程能力7/15/20212第六章内容内联函数(InlineFunction
2、s)数据结构(DataStructures)算法(Algorithms)数值计算(NumericalComputation)STL算法(STLAlgorithms)动态内存(DynamicMemory)低级编程(LowerProgramming)7/15/202131.内联函数(InlineFunctions)做法:将一些反复被执行的简单语句序列做成小函数用法:在函数声明前加上inline关键字作用:不损害可读性又能提高性能7/15/20214//================================
3、==#includeboolisDigit(char);//小函数intmain(){for(charc;cin>>c&&c!='';)if(isDigit(c))std::cout<<“Digit.";elsestd::cout<<“NonDigit.";}//---------------------------------boolisDigit(charch){returnch>='0'&&ch<='9'?1:0;}//===========================
4、======频繁调用的函数:用昂贵的开销换取可读性7/15/20215//================================#includeintmain(){for(charc;cin>>c&&c!='';)if(ch>='0'&&ch<='9'?1:0)std::cout<<“Digit.";elsestd::cout<<“NonDigit.";}//===============================内嵌代码:开销虽少,但可读性差7/15/20216
5、内联方式:开销少,可读性也佳//==================================#includeinlineboolisDigit(char);//小函数intmain(){for(charc;cin>>c&&c!='';)if(isDigit(c))std::cout<<"Digit.";elsestd::cout<<"NonDigit.";}//---------------------------------boolisDigit(charch){ret
6、urnch>='0'&&ch<='9'?1:0;}//=================================内联标记放在函数声明的前面7/15/20217内联函数的使用经验:函数体适当小,且无循环或开关语句,这样就使嵌入工作容易进行,不会破坏原调用主体.如:排序函数不能内联程序中特别是在循环中反复执行该函数,这样就使嵌入的代码利用率较高.如:上例中的isDigit函数程序并不多处出现该函数调用,这样就使嵌入工作量相对较少,代码量也不会剧增7/15/20218//===================
7、===================#include#includeusingnamespacestd;//--------------------------------------intcalc1(inta,intb){returna+b;}inlineintcalc2(inta,intb){returna+b;}//--------------------------------------intmain(){intx[1000],y[1000],z[1000];cloc
8、k_tt=clock();for(inti=0;i<1000*1000*1000;++i)z[i]=calc1(x[i%1000],y[i%1000]);cout<<(clock()-t)/CLK_TCK<<“withoutinline";t=clock();for(inti=0;i<1000*1000*1000;++i)z[i]=calc2(x[i%1000],y[i%1000]
此文档下载收益归作者所有