1
私は数多くのプロパティのゲッターで計算を行う数学クラスを持っています。今度は、これらのプロパティを変換して、最初の評価がその後の結果のみを返すようにしました。短絡ゲッターとレイジーゲッターのクラスのパフォーマンス
パフォーマンスについては、コレクションに格納されているインスタンスが数千ないし数千になる可能性が高いことを考えれば、平均的には最高のアプローチが考えられます。
GCの負荷が増大し、nullablesが離れ、親オブジェクトからメモリを割り当てますと、それはまた、参照の局所性に影響を与えます。私には関係
物事は後者のアプローチがあることです。
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;
}
}
...
}
[あなたの馬を走らせる](https://ericlippert.com/2012/12/17/performance-rant/) – Equalsk
純粋なパフォーマンスプロファイリングでは何も確立されません。これらのプロパティがどれくらいの頻度でアクセスされているか、リストされている問題がどれだけ高価かなどによって、複雑な指標になります...しかし、おそらく違いはありませんが、より読みやすいオプションにするのが最善です。私はちょうど他の人がそれについて何を言わなければならないのだろうかと思っていた... – zman
なぜコンストラクタで結果のベクトルを計算し、それがnullでないようにするのですか? –