C# 创建公共对象构造函数是否会影响性能? 背景

C# 创建公共对象构造函数是否会影响性能? 背景,c#,performance,C#,Performance,假设我有一个地址对象: public class Address_Model{ public int Id {get; set;} public string Street{get; set;} public string City {get; set;} public string State {get; set;} public string PostalCode{get; set;} } 此属性用于其他几个对象(即office对象、hom

假设我有一个
地址
对象:

public class Address_Model{
     public int Id {get; set;}
     public string Street{get; set;}
     public string City {get; set;}
     public string State {get; set;}
     public string PostalCode{get; set;}
}
此属性用于其他几个对象(即
office
对象、
home
对象等):

这些模型住在我的BLL里。在使用DAL数据的构造函数中,我当前手动构造
Address
属性:

public Office_Model GetOffice(int id){

var office = DAL.SomeClass.GettOfficeById(id);

return new Office_Model
{
   Id = office.Id,
   Address = new Address_Model{
       Id = office.Address.Id,
       Street = office.Address.Street,
       City = office.Address.City,
       State = office.Address.State,
       PostalCode = office.Address.PostalCode
   }
}

}

public Home_Model GetHome(int id){

var home = DAL.SomeClass.GettHomeById(id);

return new Home_Model
{
   Id = home.Id,
   Address = new Address_Model{
       Id = home.Address.Id,
       Street = home.Address.Street,
       City = home.Address.City,
       State = home.Address.State,
       PostalCode = home.Address.PostalCode
   }
}

}
为了提高代码的可维护性(例如,不必在构建地址模型的所有地方添加新的属性,如
Street2
),我想创建一种构建地址模型的常用方法:

public Address_Model GetAddressModel(DAL.SomeClass.Address address){

     return new Address_Model{
           Id = address.Address.Id,
           Street = address.Address.Street,
           City = address.Address.City,
           State = address.Address.State,
           PostalCode = address.Address.PostalCode
     }

}
现在,我的BLL getter方法看起来更像这样:

  public Office_Model GetOffice(int id){

    var office = DAL.SomeClass.GettOfficeById(id);

    return new Office_Model
    {
       Id = office.Id,
       Address = GetAddressModel(office.Address);
    }

    }

    public Home_Model GetHome(int id){

    var home = DAL.SomeClass.GettHomeById(id);

    return new Home_Model
    {
       Id = home.Id,
       Address = GetAddressModel(home.Address);
    }

    }
问题: 授权该施工作业是否会对绩效产生负面影响?我是性能评测新手,刚刚学习了
装箱
拆箱
;我不确定这种性能下降是否适用于我在这里所做的工作

显然,我已经将这个例子简化到了很大程度。实际上,需要构造更多的嵌套对象。

装箱
,来自:

装箱是将值类型转换为类型或对象的过程 此值类型实现的任何接口类型


由于
地址
对象是引用类型(标记为
而不是
结构
),并且您希望收到
地址
类型作为参数,因此代码中不会出现装箱。更重要的是,JIT编译器可能会决定内联您的方法调用,这将完全消除为该调用创建新堆栈框架的情况。

请阅读:在初始开发期间,您可以忽略几乎所有的性能考虑,然后在应用程序完全工作后解决您明确测量的任何此类问题。这里没有装箱的情况。不,这不会影响性能。一旦你有机会真正使用性能评测,你可能会发现一些有趣的东西;根据我的经验,瓶颈几乎从来没有达到我想象的程度。“我们应该忘记小效率,比如说97%的时间:过早优化是万恶之源”~~D.KnuthThanks解释说,Yuval。这是有道理的,当然。作为一个侧重点,我会考虑重构这些方法,这样就根本不用添加这个方法了。看看,也许会让你的生活更轻松。再次感谢。我会调查的。
  public Office_Model GetOffice(int id){

    var office = DAL.SomeClass.GettOfficeById(id);

    return new Office_Model
    {
       Id = office.Id,
       Address = GetAddressModel(office.Address);
    }

    }

    public Home_Model GetHome(int id){

    var home = DAL.SomeClass.GettHomeById(id);

    return new Home_Model
    {
       Id = home.Id,
       Address = GetAddressModel(home.Address);
    }

    }