【问题标题】:Call a property all the times or assign the value to a variable and use it始终调用属性或将值分配给变量并使用它
【发布时间】:2015-12-12 11:26:44
【问题描述】:

考虑以下类 -

Class A 
{
   CustomObject propertyA {get;set;}
}

在程序中的一个方法中,propertyA 是通过 classA 对象这样使用的 -

void Main()
 {
   A a= new A();
   // use of propertyA
   a.PropertyA *****
   a.PropertyA *****
   a.Property.******
 }

如果首先将 a.properyA 的值分配给一个变量,然后在所有地方使用该变量,是否会提高程序的性能,或者它只会提高代码的可读性。下面给出的是代码 -

void Main()
 {
   A a= new A();
   var propertyA = a.PropertyA; 
   // use of propertyA
   propertyA *****
   propertyA *****
   propertyA.******
 }

【问题讨论】:

    标签: c# performance properties clr


    【解决方案1】:

    根据您的上下文和您的使用情况,生成的 IL 的性能可能会有非常小的改进的可能性非常小,尽管在我的测试用例中添加了两条额外的指令来处理额外的(在我的意见)财产。

    也就是说,这很可能是过早的优化,当然不能保证性能改进。不能保证 CLR 和 JITter 都不会优化分配。

    您最好的经验法则是编写可维护、可读的代码,并且只有在发现性能问题时才担心这些类型的优化。在大多数情况下,编译器或抖动将能够比您开始时更好地优化。

    【讨论】:

    • 好的。如果属性在内部进行计算,那么使用变量并将属性值分配给它是有意义的。我猜。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多