[C/C++]_[初级]_[如何编写简单有效代码,提高程序运行效率和性能]
2015-08-23 15:24
806 查看
1.优化编译器的能力和局限性,妨碍优化的因素是函数调用。
两个函数的运行结果一样,AddFun2比AddFun1减少了函数的多次调用。
2.改善程序性能
//表明每元素的周期数,通过周期数优化程序的性能
3.消除循环的低效率
//combine2采用了代码移动的方式优化代码。
//对于一个长度是262144的字符串,combine1需要整整3.1分钟CPU时间;
//combine2只需要0.006秒--比combine1快了30000多倍。
//字符串长度每增加一倍,运行时间也会增加一倍。
int fun(int); int AddFun1(int x) { return fun(x)+fun(x)+fun(x); } int addFun2(int x) { return 3*fun(x); }
两个函数的运行结果一样,AddFun2比AddFun1减少了函数的多次调用。
2.改善程序性能
void sum1(int n) { int i; for(i =0;i<n;i++)//循环周期数n { c[i]=a[i]+b[i]; } } void sum2(int n) { int i; for(i =0;i<n;i+=2)//循环周期数n/2; { c[i]=a[i]+b[i]; c[i+1]=a[i+1]+b[i+1]; } }
//表明每元素的周期数,通过周期数优化程序的性能
3.消除循环的低效率
void combine1(char *s) { int i; for(i =0;i<strlen(s);i++) { if(s[i] >='A'&& s[i] <= 'Z') { s[i] -=('A'-'a'); } } } void combine2(char *s) { int i; int length =strlen(s); for(i =0;i<length;i++) { if(s[i] >='A'&& s[i] <= 'Z') { s[i] -=('A'-'a'); } } }
//combine2采用了代码移动的方式优化代码。
//对于一个长度是262144的字符串,combine1需要整整3.1分钟CPU时间;
//combine2只需要0.006秒--比combine1快了30000多倍。
//字符串长度每增加一倍,运行时间也会增加一倍。
相关文章推荐
- 出入栈顺序可能性
- c语言获取符号位整数和浮点
- 【七】C++一些新的关键字 -- new、delete、强制类型转换
- 黑马程序员——C语言内存管理
- C语言 位操作
- 2016阿里巴巴c/c++研发工程师在线笔试题(附加题)(题目写的很乱,纯属碎片)
- 2016届 阿里巴巴校招研发工程师C/C++笔试题--2015.08.23
- 队列 c语言实现
- 2016阿里巴巴c/c++研发工程师在线笔试题(选择题)
- 如何在VC++中使用Windows Forms (VS2012-VS2015)
- 【C语言经典实例】-switch分支结构-模拟自动售货机
- 阿里巴巴2016校招在线笔试附加题(C++研发)
- hdu4762Cut the Cake(概率+大数操作(java)+C++高精度模板)
- C++实现九宫格游戏人机对战
- C语言编程中的问题
- Effective C++ 条款16 成对使用new和delete时要采取相同形式
- C语言中的atan和atan2
- 学习了C语言有很多感悟!
- Visual C++与Windows程序设计
- C语言选择菜单的试手程序!