1 / 43
文档名称:

钱能C程序设计教程ppt课件.ppt

格式:ppt   大小:125KB   页数:43页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

钱能C程序设计教程ppt课件.ppt

上传人:ogthpsa 2020/9/22 文件大小:125 KB

下载得到文件列表

钱能C程序设计教程ppt课件.ppt

相关文档

文档介绍

文档介绍:C++程序设计教程(第二版)第六章性能Chapter6Performance清华大学出版社钱能2020/9/221提高性能的意义:性能对提高编程能力举足轻重如何提高性能? 以合理使用资源为前提,,提高效率就能提高性能学****目标:,对同一问题的不同要求,模仿各种编程技巧与空间布局策略,,,学会测算时/空交换的代价,客观评估自身的编程能力2020/9/222第六章内容内联函数(InlineFunctions)数据结构(DataStructures)算法(Algorithms)数值计算(putation)STL算法(STLAlgorithms)动态内存(DynamicMemory)低级编程(LowerProgramming)2020/9/(InlineFunctions)做法:将一些反复被执行的简单语句序列做成小函数用法:在函数声明前加上inline关键字作用:不损害可读性又能提高性能2020/9/224//==================================#include<iostream>boolisDigit(char);//小函数intmain(){for(charc;cin>>c&&c!='\n';)if(isDigit(c))std::cout<<“Digit.\n";elsestd::cout<<“NonDigit.\n";}//---------------------------------boolisDigit(charch){returnch>='0'&&ch<='9'?1:0;}//=================================频繁调用的函数:用昂贵的开销换取可读性2020/9/225//================================#include<iostream>intmain(){for(charc;cin>>c&&c!='\n';)if(ch>='0'&&ch<='9'?1:0)std::cout<<“Digit.\n";elsestd::cout<<“NonDigit.\n";}//===============================内嵌代码:开销虽少,但可读性差2020/9/226内联方式:开销少,可读性也佳//==================================#include<iostream>inlineboolisDigit(char);//小函数intmain(){for(charc;cin>>c&&c!='\n';)if(isDigit(c))std::cout<<"Digit.\n";elsestd::cout<<"NonDigit.\n";}//---------------------------------boolisDigit(charch){returnch>='0'&&ch<='9'?1:0;}//=================================内联标记放在函数声明的前面2020/9/227内联函数的使用经验:函数体适当小,且无循环或开关语句,这样就使嵌入工作容易进行,:排序函数不能内联程序中特别是在循环中反复执行该函数,:上例中的isDigit函数程序并不多处出现该函数调用,这样就使嵌入工作量相对较少,代码量也不会剧增2020/9/228//======================================#include<iostream>#include<time>usingnamespacestd;//--------------------------------------intcalc1(inta,intb){returna+b;}inlineintcalc2(inta,intb){returna+b;}//--------------------------------------intmain(){intx[1000],y[1000],z[1000];clock_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\n";t=clock();for(inti=0;i<1000*1000*1000;++i)z[i]=calc2(x[i%1000],y[i%1000]);cout<<(cl