# Отчет по лабораторной работе №6

Выполнила студентка гр. ИСЭбд-41 Гренадерова А.А.

## Создание приложения

Выбрала язык C#, Windows Forms.

Приложение имеет поле ввода матрицы, в которое можно через пробел вносить элементы матрицы. 
Можно сгенерировать матрицу указав её размерность. 
При необходимости можно очистить матрицу и определитель. 
Количество потоков в параллельном алгоритме регулируется в соответствующем поле.  

Попробуем запустить обычный и паралелльный алгоритмы на матрицах 2 на 2 и зафиксировать результат выполнения по времени.

![](screens/2.1.png)
![](screens/2.2.png)

В результате обычный алгоритм выполнился за 0,0004332 секунды, в то время как паралелльный выполнился за 0,0047348 секунды.

## Бенчмарки

Протестируем обычный и параллельный алгоритм определение детерминанта на различной размерности матрицы. 

В ходе экспериментов было установлено, что обработка матрицы размеров больше 11 на 11 занимает слишком много времени в обычном алгоритме, поэтому для тестирования возьмем матрицы 4 на 4, 6 на 6 и 11 на 11. 

Сверху отображен результат обычного алгоритма, снизу паралелльного.

Матрица 4 на 4

![](screens/4.1.png)
![](screens/4.2.png)

Матрицы 6 на 6

![](screens/6.1.png)
![](screens/6.2.png)

Матрицы 11 на 11

![](screens/11.1.png)
![](screens/11.2.png)

Сравнение обработки матрицы 11 на 11 на различном количестве потоков паралельного алгоритма.

![](screens/11СРазнымиПотоками.png)

Вывод: Параллельный алгоритм работает быстрее только при наличии большого количества операций. Если операций не так много, то обычный алгоритм справляется быстрее. 