返回直接初始化和存储在变量中的性能差异

  • 本文关键字:性能 变量 初始化 存储 返回 c#
  • 更新时间 :
  • 英文 :


以下两者之间是否有任何区别(性能方面(:

public User GetUser1()
{
var user = _database.User.First();
return user;
}
public User GetUser2()
return _database.User.First();
}

下面是 LINQPad for C# 7.0 从我的数据库上的相同函数输出:

GetUser1:
IL_0000:  ldarg.0     
IL_0001:  call        LINQPad.User.TypedDataContext.get_Users
IL_0006:  call        System.Linq.Queryable.First<User>
IL_000B:  ret         
GetUser2:
IL_0000:  ldarg.0     
IL_0001:  call        LINQPad.User.TypedDataContext.get_Users
IL_0006:  call        System.Linq.Queryable.First<User>
IL_000B:  ret         

这是关闭优化的输出。 请注意,NOPs 和BR.S用于调试/断点目的。

GetUser1:
IL_0000:  nop         
IL_0001:  ldarg.0     
IL_0002:  call        LINQPad.User.TypedDataContext.get_Users
IL_0007:  call        System.Linq.Queryable.First<User>
IL_000C:  stloc.0     // user
IL_000D:  ldloc.0     // user
IL_000E:  stloc.1     
IL_000F:  br.s        IL_0011
IL_0011:  ldloc.1     
IL_0012:  ret         
GetUser2:
IL_0000:  nop         
IL_0001:  ldarg.0     
IL_0002:  call        LINQPad.User.TypedDataContext.get_Users
IL_0007:  call        System.Linq.Queryable.First<User>
IL_000C:  stloc.0     
IL_000D:  br.s        IL_000F
IL_000F:  ldloc.0     
IL_0010:  ret         

最新更新