Skip to content

bumashka/PrimaryNumbers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Лабораторная работа №2

Создание многопоточного приложения

Задача

Вычисление простых чисел

Для решения задачи был выбран способ нахождения простых чисел в диапозоне. Каждое число диапазона проверяется на возможность деления всеми предшествующими его числами. Основная функция нахождения простых чисел в диапазоне: возвращет набор простых чисел.

public List<Integer> findPrimesInRange() {
        List<Integer> primes = new ArrayList<>();
        Arrays.stream(range).forEach(
                i -> {
                    if (i > 1) {
                        if (IntStream.range(2, i).noneMatch(n -> i % n == 0)) {
                            primes.add(i);
                        }
                    }
                }
        );
        return primes;
}

Для создания многопоточного приложения нахождения простых чисел был выбран метод с использованием Futures. Для этого класс PrimeNumbers наследует Callable.

Исследование

Ниже представлены графики взаимосвязи между количеством тредов и временем нахождения простых чисел в заданном диапазоне.

Scatter plot for range 0 - 15000 with 25 threads Scatter plot for range 0 - 100000 with 100 threads

Из графиков видно, что на большом диапозоне использование тредов в данной задаче оправдано, так как способно значительно увеличить скорость выполнения. При этом, начиная с определённого количества тредов график выходит на плато и всё большее количество тредов уже не улучшает времени.

На графиках ниже видно, что слишком большое количество тредов только ухудшает показатели времени и начинает прослеживаться линейная зависимость. Это связано с затратами времени на создание тредов.

Scatter plot for range 0 - 1000 with 500 threads Scatter plot for range 0 - 1000 with 100 threads Scatter plot for range 0 - 1000 with 25 threads

Выводы

Несмотря на то, что задача нахождения простых чисел довольно тривиальная, на ней очень хорошо видна зависимость времени выполнения программы от количества используемых тредов. Были сделаны выводы, что большое количество тредов ухудшает показатели времени выполнения данной задачи.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages