Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Parallel.For
Створимо консольний додаток
Рисунок 10. – Вікно створення консольного додатку
Створимо метод MaxNumber(), який би знаходив максимальне випадково-згенероване число:
static int Max=1; static void Maxnumber(int c) { Random rnd = new Random(); int v = rnd.Next(0, c);
if (Max < v) { Max = v; } } У методі Main () створимо цикл, який буде передавати значення змінної i в метод Maxnumber:
for (int i = 1; i < = 10000000; i++) { Maxnumber(i); } Console.WriteLine(" Максимальное число: {0} ", Max); Console.ReadLine();
Запустимо програму. В результаті, через деякий час, відобразитися результат:
Тепер для того, щоб подивитися, скільки за часом відпрацьовується метод Maxnumber (), додамо в код стрічки:
System.Diagnostics.Stopwatch sw = System.Diagnostics.Stopwatch.StartNew();
for (int i = 1; i < = 10000000; i++) { Maxnumber(i); } long elapsed = sw.ElapsedMilliseconds; Console.WriteLine(" Время выполнения алгоритма в миллисекундах: {0}", elapsed); Console.WriteLine(" Максимальное число: {0} ", Max); Console.ReadLine();
Запустимо програму. В результаті відобразитися наступне: Рисунок 12. – Результат виконання програми
Примітка. Як видно з результату, час виконання алгоритму складає ~ 50 секунд. Підключимо директиву, для того що б використовувати цикл Parallel.For:
using System.Threading.Tasks
Тепер замінимо цикл for на Parallel.For, для того, що б метод Maxnumber, виконувався не послідовно, а асинхронно:
Parallel.For(1, 10000000, i => { Maxnumber(i); });
Запустимо програму. В результаті відобразиться наступне:
Рисунок 13. – Результат виконання програми
|