Исследовать эффективность применения нескольких потоков для организации вычислений.
Применение потоков всегда ведет к усложнению решения, поэтому оправдано только, если полученное решение значительно эффективнее, чем однопоточный вариант.
Все дальнейшие действия производить для вычисления определенного интеграла
функции sin(x) на отрезке [-100, 100].
Определить минимальный размер шага (1e-1, 1e-2, 1 e-3, 1e-4, 1e-5, 1e-6), обеспечивающий оптимальную производительность с точностью 1e-4. Ответ подтвердить вычислениями.
Для шага, определенного в п.3., подобрать оптимальное число потоков, на котором достигается минимальное время выполнения функции Solve. Заполнение данных для построения графиков выполняется программно.
Результаты представить в виде графика: по оси OX - время вычисления функции Solve, а по оси OY - количество потоков.
Отдельно записать оптимальный результат.
!Указание.
Для измерения времени выполнения функции Solve использовать StopWatch
Для построения графиков использовать https://scottplot.net/quickstart/notebook/
Замеры делать несколько раз, на графике показывать усредненный вариант
Сравнить лучший результат, полученный на шаге 5, с однопоточным вариантом реализацией (однопоточная реализация не должна использовать потоки вообще, то есть это не запуск Solve в один поток).
Показать сравнение результатов.
Если многопоточный вариант медленнее однопоточного, либо работает быстрее, но разница меньше 15%, то произвести оптимизацию многопоточной версии.
Записать в текстовый файл размер шага, выбранный в п.3, оптимальное количество потоков из п. 4 и скорость оптимальной многопоточной версии в сравнении с однопоточной (время работы, разница в процентах). Все цифры должны быть снабжены пояснениями, чтобы можно было понять значение каждой из них.
!Указание.
Для измерения времени выполнения функции Solve использовать StopWatch
Замеры делать несколько раз. Сравнивать однопоточную и многопоточную версию по усредненному значению.
Критерии приемки задания:
Оформлен PR.
Все тесты из polyglot notebook выполняются без каких-либо модификаций.
Определено оптимальное количество потоков для вычисления определенного интеграла для точности 1e-4. Представлен график с замерами производительности.
Многопоточная реализация работает быстрее, чем однопоточная. Разница не меньше, чем 15%.