"ParallelForApplication":
(рис 10.1)
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();
(рис 10.2)
Листинг кода программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ParallelForApplication
{
class Program
{
static int Max=1;
static void Maxnumber(int c)
{
Random rnd = new Random();
int v = rnd.Next(0, c);
if (Max < v)
{
Max = v;
}
}
static void Main(string[] args)
{
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();
(рис 10.3)
Примечание. Как видно из результата, время выполнения алгоритма составляет ~50 секунд.
Parallel.For:
using System.Threading.Tasks
for на Parallel.For, для того, что бы метод Maxnumber, выполнялся не последовательно, а асинхронно:
Parallel.For(1, 10000000, i =>
{
Maxnumber(i);
});
(рис 10.4)
Примечание. Как видно из результата выполнения программы, время выполнения распараллеленного метода Maxnumber(), составит приблизительно 31 секунду.
Листинг кода программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ParallelForApplication
{
class Program
{
static int Max=1;
static void Maxnumber(int c)
{
Random rnd = new Random();
int v = rnd.Next(0, c);
if (Max < v)
{
Max = v;
}
}
static void Main(string[] args)
{
System.Diagnostics.Stopwatch sw = System.Diagnostics.Stopwatch.StartNew();
Parallel.For(1, 10000000, i =>
{
Maxnumber(i);
});
long elapsed = sw.ElapsedMilliseconds;
Console.WriteLine("Время выполнения алгоритма в миллисекундах: {0}", elapsed);
Console.WriteLine("Максимальное число: {0} ",Max);
Console.ReadLine();
}
}
}
В данной части практического занятия будет разработано консольное приложение, которое скачивает содержание Web-страниц, в цикле foreach, и в цикле Parralel.Foreach.
ParallelForeachApplication
(рис 10.5)
using System.Net; using System.Threading.Tasks;
List<string>:
List<string> urls = new List<string>()
{"http://intuit.ru",
"http://rbc.ru",
"http://ozon.ru",
"http://google.com",
"http://mail.ru",
"http://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();
(рис 10.6)
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();
(рис 10.7)
Примечание. Цикл Parallel.Foreach, будет выполняться значительно быстрее т.к. методы, прописанные внутри тела цикла, будут выполняться в несколько потоков.
Листинг кода программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Net;
using System.Threading.Tasks;
namespace ParallelForeachApplication
{
class Program
{
static void Main(string[] args)
{
List<string> urls = new List<string>() {
"http://intuit.ru",
"http://rbc.ru",
"http://ozon.ru",
"http://google.com",
"http://mail.ru",
"http://lenta.ru"
};
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();
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();
}
}
}
"ParallelForApplication":
(рис 10.1)
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();
(рис 10.2)
Листинг кода программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ParallelForApplication
{
class Program
{
static int Max=1;
static void Maxnumber(int c)
{
Random rnd = new Random();
int v = rnd.Next(0, c);
if (Max < v)
{
Max = v;
}
}
static void Main(string[] args)
{
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();
(рис 10.3)
Примечание. Как видно из результата, время выполнения алгоритма составляет ~50 секунд.
Parallel.For:
using System.Threading.Tasks
for на Parallel.For, для того, что бы метод Maxnumber, выполнялся не последовательно, а асинхронно:
Parallel.For(1, 10000000, i =>
{
Maxnumber(i);
});
(рис 10.4)
Примечание. Как видно из результата выполнения программы, время выполнения распараллеленного метода Maxnumber(), составит приблизительно 31 секунду.
Листинг кода программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ParallelForApplication
{
class Program
{
static int Max=1;
static void Maxnumber(int c)
{
Random rnd = new Random();
int v = rnd.Next(0, c);
if (Max < v)
{
Max = v;
}
}
static void Main(string[] args)
{
System.Diagnostics.Stopwatch sw = System.Diagnostics.Stopwatch.StartNew();
Parallel.For(1, 10000000, i =>
{
Maxnumber(i);
});
long elapsed = sw.ElapsedMilliseconds;
Console.WriteLine("Время выполнения алгоритма в миллисекундах: {0}", elapsed);
Console.WriteLine("Максимальное число: {0} ",Max);
Console.ReadLine();
}
}
}
В данной части практического занятия будет разработано консольное приложение, которое скачивает содержание Web-страниц, в цикле foreach, и в цикле Parralel.Foreach.
ParallelForeachApplication
(рис 10.5)
using System.Net; using System.Threading.Tasks;
List<string>:
List<string> urls = new List<string>()
{"http://intuit.ru",
"http://rbc.ru",
"http://ozon.ru",
"http://google.com",
"http://mail.ru",
"http://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();
(рис 10.6)
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();
(рис 10.7)
Примечание. Цикл Parallel.Foreach, будет выполняться значительно быстрее т.к. методы, прописанные внутри тела цикла, будут выполняться в несколько потоков.
Листинг кода программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Net;
using System.Threading.Tasks;
namespace ParallelForeachApplication
{
class Program
{
static void Main(string[] args)
{
List<string> urls = new List<string>() {
"http://intuit.ru",
"http://rbc.ru",
"http://ozon.ru",
"http://google.com",
"http://mail.ru",
"http://lenta.ru"
};
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();
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();
}
}
}
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.