所以我有一个数学类,它对许多属性的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;
}
}
...
}
答案 0 :(得分:0)
因此,似乎普遍的共识是支持(过早地)性能优化代码的可读性。所以我保留了最初编写的代码,至少目前是这样。