В C # повышает ли производительность копирование переменной-члена в переменную локального стека?

Я довольно часто пишу код, который копирует переменные-члены в локальную переменную стека, полагая, что это улучшит производительность, удалив разыменование указателя, которое имеет чтобы иметь место при доступе к переменным-членам.

Верно ли это?

Например

public class Manager {
    private readonly Constraint[] mConstraints;

    public void DoSomethingPossiblyFaster() 
    {
        var constraints = mConstraints;
        for (var i = 0; i < constraints.Length; i++) 
        {
            var constraint = constraints[i];
            // Do something with it
        }
    }

    public void DoSomethingPossiblySlower() 
    {
        for (var i = 0; i < mConstraints.Length; i++) 
        {
            var constraint = mConstraints[i];
            // Do something with it
        }
    }

}

Я думаю, что DoSomethingPossibleFaster на самом деле быстрее, чем DoSomethingPossibleSlower.

Я знаю, что это в значительной степени микрооптимизация, но было бы полезно получить окончательный ответ.

Edit Просто чтобы добавить немного фона вокруг этого. Наше приложение должно обрабатывать большое количество данных, поступающих из телекоммуникационных сетей, и этот метод, вероятно, будет вызываться примерно 1 миллиард раз в день для некоторых наших серверов. Я считаю, что помогает каждая мелочь, и иногда все, что я пытаюсь сделать, это дать компилятору несколько подсказок.

9
задан Nick Randell 23 November 2011 в 07:38
поделиться