Sun Studio 12:Fortran 编程指南

9.1.4.2 消除子程序调用

循环嵌套深层调用的子程序可能会被调用数千次。即使每次调用花在每个例程上的时间很少,但累加效果却可能会很大。另外,由于编译器在调用期间不能对寄存器状态作出假设,所以子程序调用会抑制包含这些调用的循环的优化。

子程序调用的自动内联(使用 -inline=x,y,..z-O4)是一种让编译器用子程序本身替换实际调用的方法(即将子程序拉到循环中)。要内联的例程的子程序源代码必须与调用例程存在于相同的文件中。

还有其他几种消除子程序调用的方法: