“递归”属性如何影响FORTRAN90子例程的性能

fpnick

我正在实现一项新功能,该功能可能导致沿某个代码路径递归调用许多子例程。

因此,我必须将recursive属性分配给那些子例程。

我的问题是:这如何影响这些子例程的计算时间?性能在该代码中非常重要,因此最好知道其可能产生的影响。

詹妮布

正确的答案是分析您的代码并进行测试。

根据经验,在现代编译器中,递归关键字如何影响代码生成,主要是关于大型局部数组。对于非递归过程,可以将它们放在静态数据部分(.data或.bss,具体取决于平台的二进制格式),但这显然不适用于可能被递归调用的过程。因此,在那种情况下,编译器必须在堆上创建那些变量,这会增加分配和释放的成本,或者在任何情况下都只能在堆栈上创建它们,并希望用户环境的堆栈大小没有非常小的限制。

顺便说一句,在即将到来的Fortran 2015标准的草稿中,递归过程已成为默认过程,并且如果有人明确希望拥有不应递归调用的过程,则使用新的关键字“ non_recursive”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

“递归”属性如何影响FORTRAN90子例程的性能

来自分类Dev

如何编译Fortran子例程

来自分类Dev

Fortran 90,如何在子例程中使用派生类型中定义的数组

来自分类Dev

在Fortran 90中的模块内部使用子例程

来自分类Dev

Fortran90中的变量相关格式

来自分类Dev

如何基于用户输入变量(fortran90)执行许多语句?

来自分类Dev

从fortran90(或gfortran)逆向翻译为ratfor90?

来自分类Dev

在Fortran 90中从定义中分离函数/子例程声明的干净方法

来自分类Dev

Fortran 90子例程中重复使用的2D数组

来自分类Dev

在Fortran 90中从定义中分离函数/子例程声明的干净方法

来自分类Dev

如何使用多个循环优化此Fortran子例程?

来自分类Dev

如何使用SymPy编码源生成Fortran子例程

来自分类Dev

R调用Fortran子例程

来自分类Dev

Fortran语法(子例程的声明)

来自分类Dev

fortran90中dowhile和do while之间的区别

来自分类Dev

使用fortran90 deallocate语句导致内存损坏

来自分类Dev

在Fortran90中读取二进制输入

来自分类Dev

带有预编译和模块的Fortran90 Makefile

来自分类Dev

在 Fortran90 中使用 LAPACK、BLAS 计算矩阵的逆

来自分类Dev

Fortran打印声明性能影响

来自分类Dev

使用OpenMP在Fortran中并行化分支递归子例程时,线程创建失败

来自分类Dev

fortran:如何将空指针传递给子例程,该子例程将在其中定义并返回

来自分类Dev

f2py Fortran子例程中的检查和依赖属性是什么?

来自分类Dev

Perl +递归子例程+在子例程外部定义的访问变量

来自分类Dev

从R调用并行的fortran MPI子例程

来自分类Dev

在Fortran子例程中读取许多文件

来自分类Dev

fortran模块的子例程名称冲突

来自分类Dev

Fortran子例程值关键字

来自分类Dev

fortran子例程:任意类型的数组

Related 相关文章

  1. 1

    “递归”属性如何影响FORTRAN90子例程的性能

  2. 2

    如何编译Fortran子例程

  3. 3

    Fortran 90,如何在子例程中使用派生类型中定义的数组

  4. 4

    在Fortran 90中的模块内部使用子例程

  5. 5

    Fortran90中的变量相关格式

  6. 6

    如何基于用户输入变量(fortran90)执行许多语句?

  7. 7

    从fortran90(或gfortran)逆向翻译为ratfor90?

  8. 8

    在Fortran 90中从定义中分离函数/子例程声明的干净方法

  9. 9

    Fortran 90子例程中重复使用的2D数组

  10. 10

    在Fortran 90中从定义中分离函数/子例程声明的干净方法

  11. 11

    如何使用多个循环优化此Fortran子例程?

  12. 12

    如何使用SymPy编码源生成Fortran子例程

  13. 13

    R调用Fortran子例程

  14. 14

    Fortran语法(子例程的声明)

  15. 15

    fortran90中dowhile和do while之间的区别

  16. 16

    使用fortran90 deallocate语句导致内存损坏

  17. 17

    在Fortran90中读取二进制输入

  18. 18

    带有预编译和模块的Fortran90 Makefile

  19. 19

    在 Fortran90 中使用 LAPACK、BLAS 计算矩阵的逆

  20. 20

    Fortran打印声明性能影响

  21. 21

    使用OpenMP在Fortran中并行化分支递归子例程时,线程创建失败

  22. 22

    fortran:如何将空指针传递给子例程,该子例程将在其中定义并返回

  23. 23

    f2py Fortran子例程中的检查和依赖属性是什么?

  24. 24

    Perl +递归子例程+在子例程外部定义的访问变量

  25. 25

    从R调用并行的fortran MPI子例程

  26. 26

    在Fortran子例程中读取许多文件

  27. 27

    fortran模块的子例程名称冲突

  28. 28

    Fortran子例程值关键字

  29. 29

    fortran子例程:任意类型的数组

热门标签

归档