对于程序性能优化的理解

来源:互联网 发布:linux查看服务器ip 编辑:程序博客网 时间:2024/05/27 20:48

众所周知,C语言是编译型语言,而一般使用的GCC对程序的编译是在保证不会产生歧义的情况下对程序进行优化的,GCC编译器也可以设置其的优化程度,但更高的优化级别会使程序规模增加,不易用标准的调试工具进行调试。一般采用的优化级别为 -02,所以说这需要程序员优化自己的代码,以提高程序的表现。
其中书中举了几个例子来说明编译器无法优化的情况,第一个为储蓄名别名使用,即一个指针对另个指针进行赋值时,编译器会考虑到两个指针可能指向同一个地址,从而采用了更谨慎的优化。另一种情况是在函数调用时,一个函数对另一个函数进行调用时,另一个函数每次调用可能会产生副作用,如改变全局变量等。内联函数可以改善这个情况,即将函数调用替换为函数体,这样既可以减少函数的调用,也能使编译器进行更好的优化。
在程序方面对性能进行优化要考虑以下几点:
(1):消除循环的低效率 (2):减少过程调用 (3):消除不必要的储存引用
即尽可能的将需要反复调用的函数与储存通过程序员的优化来提高性能。
这里写图片描述
从上方图片可看到,-02优化在循环中不使用movss指令,而是直接将product储存在寄存器里,在寄存器上保存数据,而-01优化是每次循环时,都从储存中读取数据转移至寄存器进行乘法运算,再把得到的值储存回%ebp指向的地址,比 -02 优化多进行了一次读的操作。

0 0
原创粉丝点击