命名函数 return 值中 result 关键字的性能影响

performance implications with the result keyword in naming function return values

我正在为高性能计算编写代码。我发现使用 result 关键字来命名函数的 return 值很方便。我想知道这里是否有任何性能问题?特别是,编译器是否会为指示的 'result-name' 创建一个临时变量,最终将其复制到与函数名称关联的变量中,或者 'result-name' 只是一个别名?

我用'gfortran -S'编译了下面两段代码:

program test_result
  real*8 :: a, b, c
  a = 10.0
  b = 20.0
  c = myfunc(a, b)
contains
  function myfunc(x, y)
    real*8 :: myfunc
    real*8 :: x, y
    myfunc = x * y
  end function myfunc
end program test_result
program test_result
  real*8 :: a, b, c
  a = 10.0
  b = 20.0
  c = myfunc(a, b)
contains
  function myfunc(x, y) result(f)
    real*8 :: f
    real*8 :: x, y
    f = x * y
  end function myfunc
end program test_result

在没有优化的情况下,编译器给了我两个不同的汇编输出,虽然经过优化,但生成的装配线看起来是一样的。有人知道这里的含义吗?

谢谢!

不,没有任何性能损失,这只是语法问题,生成的代码是相同的。它真的只是一个 "alias".

即使禁用优化也不应该有任何差异。我的测试证实了这一点。如果您不是这种情况,您应该展示您从编译器中获得的差异。