你的for循环真的高效吗——优化for循环

你的for循环真的高效吗——优化for循环

ID:18461153

大小:112.50 KB

页数:6页

时间:2018-09-18

你的for循环真的高效吗——优化for循环_第1页
你的for循环真的高效吗——优化for循环_第2页
你的for循环真的高效吗——优化for循环_第3页
你的for循环真的高效吗——优化for循环_第4页
你的for循环真的高效吗——优化for循环_第5页
资源描述:

《你的for循环真的高效吗——优化for循环》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、在我们所写的程序中,几乎没有不用到for循环的,但是,对于for循环,很多人确实效率很低的,包括我看得很多代码,for循环的执行效率非常低,下面我就举个例子来说明:viewplaincopytoclipboardprint?1#include2char*string="zhangbo";3intmain(intargc,char**argv)4{5inti;6for(i=0;i

2、,不就是n吗?其实,你错了,你说的n只是在算法层面上的优化,其实对于底层的优化还没做好,这段代码的效率是n^2(n的平方),为什么?是这样的,我们在每次循环的时候,都会调用strlen函数,这个函数的效率也是n,所以,我们要再加一个变量,比如下边所看到的,viewplaincopytoclipboardprint?10#include11char*string="zhangbo";12intmain(intargc,char**argv)13{14inti,k;15k=strlen(zhangbo);16for(i=0;i

3、i);18return(0);19}这个程序的效率是2n,当n很大时,我就不说了。再看这个例子:viewplaincopytoclipboardprint?20#include21intmain(intargc,char**argv)22{23inti,m,k1,k2,k3,k4,k5,k6,k7,k8;24m=10000000;12for(i=0;i

4、的,在每次for循环的时候,编译器会给变量i,变量m每个独占一个寄存器,因为是循环嘛,编译器给i和m也是为了效率考虑,不用再向寄存器加载每次循环的判断变量了,但是,一般基于Intel的处理器都只有8个通用寄存器,这样,我们就剩下了6个寄存器给for循环里的内容中的变量使用,但是,我们的变量有8个,我们这时会在把其他的变量入栈,这样,我们的效率变低了,每次出战或者入栈都会消耗两个CPU时钟周期,这样,我们就总共满了8个周期,但是,如果更多呢?呵呵!我们可以这样该我们的程序;viewplaincopytoclipboardprint?10#include11intmain

5、(intargc,char**argv)12{13inti,m,k1,k2,k3,k4,k5,k6,k7,k8;14m=10000000;1516for(i=0;i

6、个程序:viewplaincopytoclipboardprint?1#include2char*hello="hello";3char*__=",";1intmain()2{3char*world="world";4printf("%s%s%s",hello,__,world);5return0;6}我们都知道这个程序输hello,world,对了!我们却不知道字符串hello,字符串__,字符串world是不是在一个位置,如果你觉得,不必关心这些了,反正程序已经达到了效果,那么请你离开这个网页,不要浪费你的时间。回到计算机上来,我们要让计算机发挥最大的性能,就

7、必须也要像“了解汽车内部结构的工程师”一样的了解计算机,我时常赞叹计算机设计的优美。为了加快访问的速度,我们加入了缓存,缓存的加入,就像我们在超高速行驶汽车时,再优秀的发动机也不能完全燃烧汽油,而且速度越高,会由于空气的不足,导致汽油燃烧不尽,从而成了汽车提速的瓶颈,然后,我们在汽车的身上再多开几个洞(这就是你为什么见到豪华跑车身上都有几个洞),把空气压缩进发动起,从而提高速度。这和计算机缓存有着异曲同工之妙,好好利用,就相当于,你比别人跑得更

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。