c# – 直接返回值或创建临时变量之间的性能差异

与直接返回分配给此变量的值相比,在函数中创建临时变量是否存在性能损失或内存消耗差异?

例如,这些函数中的哪一个(GetValue)性能更好,节省内存或两者都完全相同:

情况1:

  private string GetValue()
  {
     return this.GetResult();
  }

  private string GetResult()
  {
     // Code here that return a big string...
  }

案例2:

  private string GetValue()
  {
     string result = this.GetResult();

     return result;
  }

  private string GetResult()
  {
     // Code here that return a big string...
  }

谢谢.

在这些基本情况下,可读性总是胜过性能差异.我认为这是一个微观优化,这些很大程度上是浪费时间.你节省的费用将被不确定的GC运行所吞噬.

如果允许编译器对其进行优化,则大多数情况下生成的代码没有差异.在这种情况下得到的IL似乎有一些额外的操作码来引用堆栈上的字符串,但是JIT然后对此做了什么是任何人的猜测.

我有时会在返回之前分成临时变量来审查它们,但我从不担心性能影响.最重要的是,我从未见过需要这种改进来解决性能问题的案例.

翻译自:https://stackoverflow.com/questions/11798033/performance-difference-between-returning-a-value-directly-or-creating-a-temporar

转载注明原文:c# – 直接返回值或创建临时变量之间的性能差异