优化--c程序员之终极标靶

优化--c程序员之终极标靶

ID:8991198

大小:43.00 KB

页数:9页

时间:2018-04-14

优化--c程序员之终极标靶_第1页
优化--c程序员之终极标靶_第2页
优化--c程序员之终极标靶_第3页
优化--c程序员之终极标靶_第4页
优化--c程序员之终极标靶_第5页
资源描述:

《优化--c程序员之终极标靶》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、优化--c程序员之终极标靶一个用户往往把他的生命中大部分时间用来等待计算机输出结果,为了减少这个等待时间,用户不得不采购更快的计算机,增加内存或更换整个网络.开发者有责任尽量避免他的程序耗费昂贵的资源,为用户挽回宝贵的时间和金钱.--原作者请参考:优化--c程序员之终极标靶---------------------------------------------------------------------------介绍:最简单的优化方法是借助prof工具判断程序的瓶颈在哪里,你必须判断出程序的那些部

2、分消耗了大量资源.一旦你判断出瓶颈(比如说执行上万次的循环),你所做的第一件事就是重新设计程序,减低循环次数.当然,现在绝大多数优化编译器可以做到这一点,(不过最好还是自己来--东楼),但是记住,当以下情况出现时,优化是在浪费时间:1)程序只写了一部分2)程序还没有测试通过3)看起来已经足够快了还要注意的就是判断程序的用途,如果仅仅为了得到一份报告而写的仅运行一次的程序,用户往往在午餐前运行程序,这时,程序只要在他们回来之前运行完就可以了,如果程序调用其他的程序,而且其他程序都比较慢,那么优不优化效果都差

3、不多,但是,如果是gui图形用户界面程序(比如鼠标光标显示程序),那么一点点的延迟都会遭到用户的投诉完成优化后,带上所有的优化命令编译,然后用你实际使用的数据测试它,如果做不到这一点,请小心选择你的测试数据,程序员多半倾向于按照程序的要求给输入数据,但用户可不这么干.如果你已经完成了所有优化,但是程序仍然看起来不快,注意一下你的操作系统,很多多任务操作系统按时间片来划分用户资源,如果给你的资源太少,那和你的系统管理员联系吧.1.选择一个更好的算法:应该熟悉算法语言,知道各种算法的优缺点,一般很多计算机资料

4、文本上有介绍,应该能够看得懂算法描述.这里是一些明显可以通用的替换慢的算法替换成顺序查找二分法查找或乱序查找、插入排序或冒泡排序快速排序,合并排序,根(radix)排序还要选择一种合适的数据结构(记着,你的程序所干的唯一一件事就是在计算机里搬数,把一堆数从一个地方提出来,处理一下,甩到另一个地方,那么按什么方式搬数有多重要你应该知道了吧--东楼),比如你在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多.如果你要做二分法查找,那提前排下序非常重要.2.写一些清晰,可读性好并且简单的代码一个

5、人容易看得懂的程序同样也容易被编译器读懂.一个大而复杂的表达式往往会把编译器脑袋都弄大,为了防止自己发疯,编译器往往放弃对这段代码的优化.但绝对不会向你报告,出于维护自己面子起见,东楼发现所有的编译器都只会向你报告它优化了多少,而决不会报告它干不了的有多少,东楼就亲眼见到一个瓜编译器因为一个表达式弄昏了头,把整个模块的优化都放弃了,回来居然还恬不知耻的报告优化非常顺利,整个儿一个报喜不报忧.适当的时候尽量减小每个函数的代码量(这时候对代码要抠一点,懂吗?--东楼),不过也别走极端,别为了优化把一个函数写成

6、10页纸的一堆函数,那编译器倒高兴了,可人发疯了.优化后,赶快找一台快点的机器看看效果吧(满足一下虚荣心,嬉嘻!)3.透视你的程序一个程序写出来,凭直觉就应该感觉出哪些地方快,哪些地方慢,(就是,东楼的程序就是全部凭直觉优化的(...反正吹牛不上税,嘻嘻)),一般说来,最快的运算就是分配一块内存,给指针赋值,还有就是两个整数的加法运算,别的都有点慢,最慢的就要数打开文件啦,打开新的进程啦,读写一大块内存啦,寻找啦,排序啦等等,别看这帮虾子指令都只要几个微秒,可成百上千的杀将过来,东楼可受不了.一定不能让这

7、帮虾子进循环,干了它.这是经常犯的一个错误:if(x!=0)x=0;程序的原意是当x等于0时,节约时间不执行赋值操作,可你别忘了,赋值语句才是最快的,那还不如直接写成下面的语句更来劲.x=0;还有就是一些神勇的大虾,非得等到编译器把代码输出成汇编语言级然后拿着计算器一行行加汇编指令的个数和周期数,才算优化完成了,不过可别忘了,最后一次优化不是obj代码级的,而是由link程序完成的,这没多大用.4.理解你的编译程序选项许多编译程序有几级优化选项,注意使用最优化的一项,特别注意gcc,优化选项非常多,小心使

8、用,别弄得适得其反.通常情况下一旦选用最高级优化,编译程序会近乎病态地追求代码优化,精简指令,(如djgpp的-o3),但少数情况下,这会影响程序的正确性,这是你只有改自己的程序啦.不过也有这种情况,就是一些参数会影响优化的程序,但是不会影响普通程序,这时只有具体情况具体分析了.5.内联(内嵌)gcc(使用-finline-functions参数),还有一些别的编译器可以在最高级优化中内联一些小的函数.k&c编译器则只有在库函

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

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

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