メソッドを非静的にしてインスタンスメンバーを介して同じ値にアクセスするよりも、静的メソッドに引数として引数を渡す方が速い場合はいつですか。メソッドがこれらのメンバーに読み取り専用でアクセスするとします。
他のすべての条件が同じであれば、静的メソッドの呼び出しはインスタンス メソッドの呼び出しよりわずかに高速です。
他のすべての条件が同じであれば、引数なしでメソッドを呼び出すと、引数付きでメソッドを呼び出すよりもわずかに高速です。
検討:
private Thing _thing;
void DoTheThing()
{
_thing.DoIt();
}
この同等のコードに対して:
private Thing _thing;
// caller's responsibility to pass "_thing"
static void DoTheThing(Thing thing)
{
thing.DoIt();
}
この種の最適化が実際に価値を追加する現実世界の状況は考えられませんが、思考実験として (この種のことについて議論したい人向け)、本当に利点があるのでしょうか? もしそうなら、いくつの引数 (どのタイプなど) がバランスを逆に傾けますか?
これを考慮して、他の要因はありますか?たとえば、静的メソッドは_thing
、フィールドではなくローカル変数としてアクセスします。