怎样使自己编写的c程序或c++程序运行地更快
问题有点太大了,没那么好回答。但是,单单程序竞赛向的话,其实还是容易讨论一点的:0、你的算法够漂亮吗?只要别写了个大暴力,还心满意足觉得自己的做法很快,就行。(虽然其实受过训练基本不会犯这种错了)\u0026amp;\u0026amp;开-O2,有时候写得傻瓜一点的程序,能优化出说的过去的性能的。1、了解清楚你的语言、你用的库,在你这种写法下,采用的实现方式2、在1的基础上,不要做出太蠢的事情std::set\u0026lt;int\u0026gt; s;std::lower_bound(s.begin(),s.end(),1000);for(std::set\u0026lt;int\u0026gt;::iterator it=s.begin();it!=s.end();it++){ //blablabla}bool compare_student(Student a,Student b){ return a.name\u0026lt;b.name;}std::vector\u0026lt;Student\u0026gt; students;sort(students.begin(),students.end(),compare_student);//某标程for(int i=0;i\u0026lt;10000000;i++){ printf("%c",str);}
这样的性能错误还有很多,就不多说了。3、循规蹈矩一点比如:int a;for(int j=1;j\u0026lt;=m;j++){ for(int i=1;i\u0026lt;=n;i++){ a=(i-1)*m+j; }}
4、不了解计算机组成原理/操作系统是要付出代价的曾经有个出题人对某题,想出了一个理论复杂度O(n)的做法,然后出成题,写了个标程然后实际运行时间被验题人上来就sort()的代码按在地上摩擦。http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=648\u0026amp;pid=1003(谁让出题人抬手vector\u0026lt;int\u0026gt; a,b;)——seriously,CPU的cache你也要尊重一下。还有一个也是很有趣的故事,数组左旋转k位 -- C++标准算法库中最悲剧的函数:rotate用数学公式,直接算好移到哪里,在实际环境下,被暴虐,这有点尴尬……其实CSAPP(《深入理解计算机系统》)的第5章专门讲了一些相对来讲语言无关,而比较贴近计算机内部实现的优化,如果想深入可以入一本好好学。
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 加热■手写的“时控标贴”靠谱吗? 饮品巨头寒冬争推热饮新品
- 手机■遇“纠纷”自己报警被识破 男子假卖手机骗60多万
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 有啥方法,网站,项目可以自己练习计算广告学