Файл: Параллель1 - реализовать конструкцию Parallel.For.docx

Добавлен: 13.02.2019

Просмотров: 326

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лабораторная работа №1 («Конструкция Parallel.For»)

Золотых Светлана, 2161121

Задание: реализовать конструкцию Parallel.For

Код программы:

namespace ParallelFor

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

int[,] array2Da = new int[4, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

int[,] array2Db = new int[4, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

//Multiply_array(array2Db);

Stopwatch timer2 = new Stopwatch();

timer2.Start();

int result1 = 1;

for (int i = 0; i < array2Db.GetLength(0); i++)

for (int j = 0; j < array2Db.GetLength(1); j++)

checked { result1 *= array2Db[i, j]; }

timer2.Stop();

label2.Text = "Результат умножения элементов массива: " + result1 + " \n Time: " + Convert.ToString(timer2.Elapsed);

Stopwatch timer1 = new Stopwatch();

timer1.Start();

int result = 1;

Parallel.For(0, array2Da.GetLength(0), i =>

{

for (int j = 0; j < array2Da.GetLength(1); j++)

checked { result *= array2Da[i, j]; }

}

);

timer1.Stop();

label1.Text = "Результат умножения элементов массива: " + result + " \n Time: " + Convert.ToString(timer1.Elapsed);

}

}}

Результат:


Вывод:

Разработано приложение WinForm, в котором перемножаются элементы матрицы. В программе реализованы два варианта перемножение: с использованием Parallel.For и обычное перемножение путём процедуры For. В данном примере Parallel.For является внешним циклом. Для нахождения наилучшего способа был использован таймер и велся подсчёт затраченного на каждый цикл времени. В итоге, Parallel.For оказался наиболее быстродействующим, оставляя результат выполнения программы таким же как и цикл For.