2010-03-18 1 views
4

Я пишу код для тестирования производительности веб-сайта. У меня есть следующий код:Выполняет ли «for» в .Net Framework 4.0 параллельные циклы? Или почему общая сумма не является суммой частей

 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 

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

ответ

16

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

+0

+1 но мне любопытно, какая разница? – Nate

+0

Спасибо, что решил, но, как говорит Нейт, в чем разница? –

+3

Миллисекунды получают текущие миллисекунды * часть * времени, поэтому 1,234 секунды будут давать 234. TotalMilliseconds возвращает все время в миллисекундах, поэтому выше было 1234. –

Смежные вопросы