代码之家  ›  专栏  ›  技术社区  ›  Alp Erbil

C++中返回前的分配和直接返回之间的性能差异吗?

  •  0
  • Alp Erbil  · 技术社区  · 2 年前

    以下两个函数之间是否存在性能差异,或者编译器对其的处理是否相同?

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

    谢谢

    1 回复  |  直到 2 年前
        1
  •  0
  •   eerorika    2 年前

    以下两种功能之间是否存在性能差异

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

    或者编译器处理的是相同的吗?

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

        2
  •  0
  •   codeling    2 年前

    从实用的角度来看,这有助于了解编译器对这段代码的实际操作,请参阅 this godbolt .

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

        addsd   xmm0, xmm1
        ret
    

    这意味着表演当然也会完全一样。