您的位置: 旅游网 > 明星 >> 刘德华

操作系统中的应用介绍下呢

发布时间:2021-10-27 05:29:04

代码优化 代码优化指的是编译器通过分析源代码,找出其中尚未达到最优的部分,然后对其重新进行组合,目的是改善程序的执行性能。GCC提供的代码优化功能非常强大,它通过编译选项-On来控制优化代码的生成,其中n是一个代表优化级别的整数。对于不同版本的GCC来讲,n的取值范围及其对应的优化效果可能并不完全相同,比较典型的范围是从0变化到2或3。 编译时使用选项-O可以告诉 GCC同时减小代码的长度和执行时间,其效果等价于-O1。在这一级别上能够进行的优化类型虽然取决于目标处理器,但一般都会包括线程跳转(Thread Jump)和延迟退栈(Deferred Stack Pops)两种优化。选项-O2告诉GCC除了完成所有-O1级别的优化之外,同时还要进行一些额外的调整工作,如处理器指令调度等。选项-O3则除了完成所有-O2级别的优化之外,还包括循环展开和其它一些与处理器特性相关的优化工作。通常来说,数字越大优化的等级越高,同时也就意味着程序的运行速度越快。许多Linux程序员都喜欢使用-O2选项,因为它在优化长度、编译时间和代码大小之间,取得了一个比较理想的平衡点。 下面通过具体实例来感受一下GCC的代码优化功能,所用程序如清单3所示。 清单3:optimize.c #include int main(void){double counter;double result;double temp;for (counter = 0;counter 2000.0 * 2000.0 * 2000.0 / 20.0 + 2020;counter += (5 - 1) / 4) {temp = counter / 1979;result = counter;}printf(\"Result is %lf\\\\n\", result);return 0;}

首先不加任何优化选项进行编译: # gcc -Wall optimize.c -o optimize

他也心情好的对说 借助Linux提供的time命令,可以大致统计出该程序在运行时所需要的时间: # time ./optimizeResult is .000000real 0m14.942suser 0m14.940ssys 0m0.000s

接下去使用优化选项来对代码进行优化处理: # gcc -Wall -O optimize.c -o optimize

在同样的条件下再次测试一下运行时间: # time ./optimizeResult is .000000real 0m3.256suser 0m3.240ssys 0m0.000s

对比两次执行的输出结果不难看出,程序的性能的确得到了很大幅度的改善,由原来的14秒缩短到了3秒。这个例子是专门针对GCC的优化功能而设计的,因此优化前后程序的执行速度发生了很大的改变。尽管GCC的代码优化功能非常强大,但作为一名优秀的Linux程序员,首先还是要力求能够手工编写出高质量的代码。如果编写的代码简短,并且逻辑性强,编译器就不会做更多的工作,甚至根本用不着优化。 优化虽然能够给程序带来更好的执行性能,但在如下一些场合中应该避免优化代码: ◆ 程序开发的时候 优化等级越高,消耗在编译上的时间就越长,因此在开发的时候最好不要使用优化选项,只有到软件发行或开发结束的时候,才考虑对最终生成的代码进行优化。 ◆ 资源受限的时候 一些优化选项会增加可执行代码的体积,如果程序在运行时能够申请到的内存资源非常紧张(如一些实时嵌入式设备),那就不要对代码进行优化,因为由这带来的负面影响可能会产生非常严重的后果。 ◆ 跟踪调试的时候 在对代码进行优化的时候,某些代码可能会被删除或改写,或者为了取得更佳的性能而进行重组,从而使跟踪和调试变得异常困难。

南通早泄治疗哪家好
海口白癜风
北京好的白癜风医院
猜你会喜欢的
猜你会喜欢的