C++中返回前赋值和直接返回有性能差异吗?

Is there a performance difference between assigning before returning and directly returning in C++?

下面这两个函数是否有性能差异,还是编译器处理的一样?

double f1(double a, double b) {
  return a + b;
}

double f2(double a, double b) {
  double sum = a + b;
  return sum;
}

谢谢。

Is there a performance difference between the two following functions

一个函数包含两个语句,另一个函数包含一个语句。

or is it handled by the compiler the same?

他们可以。这两个函数具有相同的可观察行为,因此它们可能会生成相同的程序。

从实用的角度来看,了解编译器实际对这样一段代码做了什么很有帮助,请参阅 this godbolt

事实证明,从“-O1”优化级别开始,例如 g++ 和 clang 创建完全相同的汇编程序指令:

    addsd   xmm0, xmm1
    ret

这意味着性能当然也会完全相同。