Выполняет ли «for» в .Net Framework 4.0 циклы параллельно? Или почему сумма не является суммой частей - PullRequest
4 голосов
/ 18 марта 2010

Я пишу код для тестирования производительности веб-сайта. У меня есть следующий код:

        string url = "http://xxxxxx";
        System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();

        System.Diagnostics.Stopwatch totalTime = new System.Diagnostics.Stopwatch();
        totalTime.Start();

        for (int i = 0; i < 10; i++)
        {
            stopwatch.Start();
            WebRequest request = HttpWebRequest.Create(url);
            WebResponse webResponse = request.GetResponse();
            webResponse.Close();
            stopwatch.Stop();
            textBox1.Text += "Time Taken " + i.ToString() + " = " + stopwatch.Elapsed.Milliseconds.ToString() + Environment.NewLine;
            stopwatch.Reset();

        }

        totalTime.Stop();
        textBox1.Text += "Total Time Taken = " + totalTime.Elapsed.Milliseconds.ToString() + Environment.NewLine;

Что дает следующий результат:

Time Taken 0 = 88
Time Taken 1 = 161
Time Taken 2 = 218
Time Taken 3 = 417
Time Taken 4 = 236
Time Taken 5 = 217
Time Taken 6 = 217
Time Taken 7 = 218
Time Taken 8 = 409
Time Taken 9 = 48
Total Time Taken = 257

Я ожидал, что общее время будет суммой отдельных времен. Кто-нибудь может понять, почему это не так?

1 Ответ

16 голосов
/ 18 марта 2010

Используйте TotalMilliseconds вместо Milliseconds и повторите тест. Ваши результаты не такие, как вы думаете.

...