始终调用属性或将值赋给变量并使用它
本文关键字:变量 调用 属性 | 更新日期: 2023-09-27 18:12:50
考虑以下类-
Class A
{
CustomObject propertyA {get;set;}
}
在程序中的方法中,propertyA通过类a对象使用,如下所示-
void Main()
{
A a= new A();
// use of propertyA
a.PropertyA *****
a.PropertyA *****
a.Property.******
}
如果首先将a.p properya的值赋给一个变量,然后在所有地方使用该变量,那么是否会提高程序的性能,或者它只会提高代码的可读性。下面是代码-
void Main()
{
A a= new A();
var propertyA = a.PropertyA;
// use of propertyA
propertyA *****
propertyA *****
propertyA.******
}
根据您的上下文和使用情况,生成的IL的性能可能会有非常小的改进,尽管在我的测试用例中添加了两个额外的指令来处理额外的(在我看来是不必要的)属性。
也就是说,这很可能是一个不成熟的优化,当然也不能保证性能的提高。不能保证CLR和JITter不会优化分配。
最好的经验法则是编写可维护、可读的代码,只有在注意到性能问题时才考虑这些类型的优化。在大多数情况下,编译器或抖动将能够比您开始时更好地优化。