Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Parallel.Foreach






У даній частині лабораторного заняття буде розроблено консольний додаток, яке викачує зміст Web-сторінок, в циклі foreach, і в циклі Parralel.Foreach.

 

Створимо новий консольний додаток

Підключаємо необхідні директиви:

 

using System.Net;

using System.Threading.Tasks;

 

Ініціалізували колекцію посилань List < string>:

 

List< string> urls = new List< string> ()

{" https://intuit.ru",

" https://rbc.ru",

" https://ozon.ru",

" https://google.com",

" https://mail.ru",

" https://lenta.ru"

};

 

Тепер, створимо цикл foreach, в якому б скачувати зміст Web-сторінок, визначені в списку List < string>:

 

System.Diagnostics.Stopwatch sw =

System.Diagnostics.Stopwatch.StartNew();

 

foreach (string url in urls)

{

WebClient client = new WebClient();

Console.WriteLine(" Скачиваем: {0}", url);

client.DownloadString(url);

}

 

long elapsed = sw.ElapsedMilliseconds;

Console.WriteLine(" Затраченное время в миллисекундах: {0}", elapsed);

sw.Stop();

 

Запустимо програму.

 

Рисунок 14. – Результат виконання програми

 

Далі, створимо аналогічний цикл, який би скачував зміст Web-сторінок, але в паралельному режимі:

 

 

Console.WriteLine(" ============================");

sw.Restart();

Parallel.ForEach(urls, url =>

{

WebClient client = new WebClient();

Console.WriteLine(" Скачиваем: " + url);

client.DownloadString(url);

});

elapsed = sw.ElapsedMilliseconds;

Console.WriteLine(" Затраченное время в миллисекундах: {0}", elapsed);

sw.Stop();

 

Console.ReadLine();

 

Запустимо програму:


Рисунок 15. – Результат виконання програми

 

Примітка. Цикл Parallel.Foreach, буде виконуватися значно швидше тому методи, прописані всередині тіла циклу, будуть виконуватися в декілька потоків.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.