ste*_*aja 2 performance fortran module
MODULE fractions
real*8, parameter:: one_over_three = 1.d0/3.d0
real*8, parameter:: eleven_over_eighteen = 11.d0/18.d0
real*8, parameter:: five_over_64 = 5.d0/64.d0
real*8, parameter:: five_over_eight = 5.d0/8.d0
real*8, parameter:: five_over_sixteen = 5.d0/16.d0
real*8, parameter:: fiveteen_over_eight = 15.d0/8.d0
real*8, parameter:: fiveteen_over_four = 15.d0/4.d0
real*8, parameter:: fiveteen_over_two = 15.d0/2.d0
real*8, parameter:: fortyfive_over_eight = 45.d0/8.d0
real*8, parameter:: nine_over_two = 9.d0/2.d0
real*8, parameter:: one_over_eight = 1.d0/8.d0
real*8, parameter:: three_over_eight = 3.d0/8.d0
real*8, parameter:: three_over_two = 3.d0/2.d0
real*8, parameter:: two_over_three = 2.d0/3.d0
real*8, parameter:: eight_over_three = 8.d0/3.d0
real*8, parameter:: seven_over_two = 7.d0/2.d0
END MODULE fractions
Run Code Online (Sandbox Code Playgroud)
在我的 fortran 程序中,我必须多次调用同一个子程序。它涉及几个分数。如果我使用上述模块或让程序在调用子例程并使用该模块时执行分数计算,它是否会提高子例程的性能?
在优化编译器时,这无关紧要。这些分数将在它们出现的任何地方进行计算。不管是写three_over_two还是直接3.d0/2.d0说,表现应该是一样的3/2d0。
就我个人而言,我不会打扰这样的模块,它会掩盖可读性。这是个别的,局部常量通常可能有利于可读性。但是我会将它保留在本地(而不是在常量的专用模块中),并且我会根据其目的而不是根据其值来命名常量。
注释显示了一个潜在问题,其中可能需要一对括号,即x*3./2.实际含义(x*3.)/2.。我个人倾向于将这些因素放在表达式的开头,因此问题不大,但最好将其考虑在内。
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |