具有短路吸气剂和懒惰吸气剂的等级的性能

时间:2017-10-24 10:38:45

标签: c# .net performance properties nullable

所以我有一个数学类,它对许多属性的getter进行计算。现在我转换了这些属性,以便在第一次评估之后只返回那个结果。

现在关于性能我想知道,鉴于存储在集合中的这些实例很可能有数百甚至数千个,这种方法最好是平均的吗?

与我有关的事情是后一种方法:

增加了GC负载,它也会影响引用的局部性,因为nullables将从父对象分配内存。

public class SomeMathType
{
     // these are structs
     public Vector A { get; }
     public Vector B { get; }
     ...
     public double Length => A + B;
     ...
}

VS

 public class SomeMathType
 {
      ...
     private double? _length;
     private Vector? _vector;

     // these are structs
     public Vector A { get; }
     public Vector B { get; }

     public Vector Vector
     {
         get
         {
             _vector = _vector ?? B - A;
             return _vector.Value;
         }
     }

     public double Length
     {
         get
         {
             _length = _length ?? Vector.Length;
             return _length.Value;
         }
     }
      ...
 }

1 个答案:

答案 0 :(得分:0)

因此,似乎普遍的共识是支持(过早地)性能优化代码的可读性。所以我保留了最初编写的代码,至少目前是这样。