Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
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();
Запустимо програму:
Примітка. Цикл Parallel.Foreach, буде виконуватися значно швидше тому методи, прописані всередині тіла циклу, будуть виконуватися в декілька потоків.
|