考虑以下课程-
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.******
}
最佳答案
尽管在我的测试案例中,添加了两个额外的指令来处理额外的指令(我认为这是不必要的),但是根据您的上下文和使用情况,所生成的IL的性能可能会有非常微小的提高,这是很小的机会。属性。
也就是说,这很可能是过早的优化,当然也不能保证性能的提高。不能保证CLR或JITter都不会优化分配。
最好的经验法则是编写可维护的,可读的代码,并且仅在发现性能问题时才担心这些类型的优化。在大多数情况下,编译器或抖动将比开始时能够更好地进行优化。