过度使用函数调用会影响性能吗?特别是在Fortran

Sam*_*dis 5 optimization fortran function-calls

我习惯性地编写具有大量功能的代码,我觉得它更清晰.但是现在我在Fortran中编写了一些需要非常高效的代码,我想知道过度使用函数是否会降低它的速度,或者编译器是否会解决正在发生的事情并进行优化?

我知道在Java/Python等中,每个函数都是一个对象,因此创建大量函数需要在内存中创建它们.我也知道在Haskell中,函数相互减少,所以它没什么区别.

有没有人知道Fortran的情况?使用intent/pure函数/声明更少的局部变量/其他任何东西是否有区别?

KLe*_*ee1 9

函数调用带来了基于堆栈的语言的性能成本,例如Fortran.他们必须添加到堆栈等.

因此,如果可能的话,大多数编译器都会尝试积极地内联函数调用.大多数情况下,编译器会在是否在程序中内联某些函数时做出正确的选择.

这种自动内联过程意味着编写函数没有额外的成本(根本).

这意味着您应该尽可能干净地编写代码,并且编译器可能会为您执行这些优化.更重要的是,解决问题的整体策略是最有效的,而不是担心函数调用的性能.