О скорости в "за" - PullRequest
       1

О скорости в "за"

0 голосов
/ 15 марта 2012

Была задача узнать, какой код быстрее и почему:

//A
        Stopwatch sw = new Stopwatch();
        Int32[] a = new Int32[10000000];
        int len = a.Length;
        sw.Start();
        //for (Int32 index = 0; index < len; index++)
        //{

        //    a[index] = 6;
        //}
        //sw.Stop();


//B
        for (Int32 index = 0; index < a.Length; index++)
        {

            a[index] = 6;
        }
        sw.Stop();

        var time = sw.ElapsedMilliseconds;

Среднее время захода на посадку B немного больше , чем A. Кто-нибудь объясняет почему?

Ответы [ 2 ]

0 голосов
/ 15 марта 2012

Полагаю, это потому, что вы опрашиваете длину массива каждый раз, когда делаете цикл, тогда как подход A должен проверять только кэшированное значение длины. Итак, в конечном счете, это сводится к идее кэширования

0 голосов
/ 15 марта 2012

В случае B каждый раз во время цикла среда выполнения вызывает код для получения длины массива.

В A это делается один раз, и результат сохраняется.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...