一直调用 属性 或将值赋给变量并使用它
Call a property all the times or assign the value to a variable and use it
考虑以下 class -
Class A
{
CustomObject propertyA {get;set;}
}
在程序的一个方法中,通过 class像这样的对象使用 propertyA -
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.******
}
尽管在我的测试用例中添加了两条额外的指令来处理额外的 (在我看来是不必要的)属性.
也就是说,这很可能是过早的优化,当然不能保证性能得到改善。无法保证 CLR 或 JITter 不会优化分配。
您最好的经验法则是编写可维护、可读的代码,并且只有在您注意到性能问题时才担心这些类型的优化。在大多数情况下,编译器或抖动将能够比您开始时更好地进行优化。
考虑以下 class -
Class A
{
CustomObject propertyA {get;set;}
}
在程序的一个方法中,通过 class像这样的对象使用 propertyA -
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.******
}
尽管在我的测试用例中添加了两条额外的指令来处理额外的 (在我看来是不必要的)属性.
也就是说,这很可能是过早的优化,当然不能保证性能得到改善。无法保证 CLR 或 JITter 不会优化分配。
您最好的经验法则是编写可维护、可读的代码,并且只有在您注意到性能问题时才担心这些类型的优化。在大多数情况下,编译器或抖动将能够比您开始时更好地进行优化。