1、合理使用inline
调用 函数实际上将程序执行顺序转移到函数所存放在内存中某个地址,将函数的程序 内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去前 要保护现场并记忆执行的地址,转回后先要恢复现场,并按原来保存地址继续执 行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。特 别是对于一些函数体代码不是很大,但又频繁地被调用的函数来讲,解决其效率 问题更为重要。引入内联函数实际上就是为了解决这一问题。
在程序编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的 函数体来进行替换。显然,这种做法不会产生转去转回的问题,但是由于在编译 时将函数休中的代码被替代到程序中,因此会增加目标程序代码量,进而增加空 间开销,而在时间代销上不象函数调用时那么大,可见它是以目标代码的增加为 代价来换取时间的节省,典型的空间换时间。
inline函数使编译器在函数调用处用函数体代码代替函数调用指令。 在生成的可执行文件中, 在调用函数处插入函数体中的代码。 这样, 程序执行到该函数的调用时,实际上并没有进行调用函数时在函数栈上的进栈出栈等操作, 而是直接执行函数体中
的代码。
inline函数至少在如下三个方面提高了程序的时间性能:
1)避免了函数调用必须执行的压栈出栈等操作;
2)由于函数体代码被移到函数调用处, 编译器可以获得更多的上下文信息, 并根据上下文信息对调用者的代码和函数体代码
进行更进一步的优化;
3)