考虑以下课程-

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都不会优化分配。

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

07-24 09:18