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

标签 c# performance memory

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

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

案例一:

  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 对此的作用是任何人的猜测。

我有时会分解为临时变量以在返回之前对其进行检查,但我从不担心性能影响。最重要的是,我从未见过需要这种改进来解决性能问题的案例。

关于c# - 直接返回值或创建临时变量之间的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11798033/

相关文章:

c - 如何减慢进程?

performance - HTML 5 在 Firefox 上的性能?

matlab中没有释放内存?

c# - Awesomium 弹出窗口 - ShowCreatedWebView 示例

c# - 在大字符串中查找标记

sql - 优化 LATERAL join 中的慢聚合

c++ - 在 Stack 上声明大数组

c# - 如何在同一个安装部署中包含安装文件?

c# - 在给定用户已经有 cookie 的情况下启动应用程序时处理 null HttpContext.Current

c++ - 使用线程时的内存分配问题