Научная статья на тему 'Использование многопоточности как способа увеличения производительности приложения, работающего с сетью'

Использование многопоточности как способа увеличения производительности приложения, работающего с сетью Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
107
17
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПОТОК / ПРОЦЕСС / PROCESS / ЯДРО / CORE / ЗАПРОС / REQUEST / АЛГОРИТМ / ALGORITHM / ЗАВИСИМОСТЬ / DEPENDENCE / ИНТЕРНЕТ / INTERNET / THREAD

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Козлов Александр Александрович, Шахова Аделина Игоревна

В статье анализируется влияние количества рабочих потоков данных на общее время выполнения программного кода на примере реальной задачи. Представлен алгоритм получения списков учебных занятий института ИПАИТ с сайта вуза ОГУ имени И.С. Тургенева. Разобрана базовая реализация алгоритма, ее недостатки и применимость в реальных условиях. Также в статье представлено улучшение базового алгоритма, основанное на применении многопроцессового пулла, проведено тестирование улучшенного алгоритма и сравнение результатов работы программного кода на различном числе рабочих потоков.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Использование многопоточности как способа увеличения производительности приложения, работающего с сетью»

Специалисты строительной отрасли, анализируя опыт России и представленные результаты проектирования и экспертизы проектной документации, выявили возможные трудности, с которыми сталкиваются проектировщики при использовании BIM-технологий. Эксперты уверенны, что для изменения ситуации необходимо принять на законодательном уровне нормативные акты и стандарты для создания системы решения задач по внедрению BIM-технологий и правила использования новых технологий в строительной отрасли.

Вывод: Для успешной реализации BIM-технологии в проектирование и строительстве зданий и сооружений необходимо разработать нормативно-технические документы, определяющие терминологию и требования к информационным моделям в соответствии со стадиями жизненного цикла планирования, создания и эксплуатации капитального объекта.

Список литературы / References

1. Вместо плоских чертежей должны быть цифровые модели зданий. [Электронный ресурс]. Режим доступа: https://kapital.kz/gosudarstvo/41505/vmesto-ploskih-chertezhej-dolzhny-byt-cifrovye-modeli-zdanij.html/ (дата обращения: 26.06.2015).

2. В строительной отрасли взят курс на использование технологий информационного проектирования (ВШ-технологий). [Электронный ресурс]. Режим доступа: http://torg94.ru/stat/7754.html/ (дата обращения: 14.08.2016).

ИСПОЛЬЗОВАНИЕ МНОГОПОТОЧНОСТИ КАК СПОСОБА УВЕЛИЧЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ ПРИЛОЖЕНИЯ,

РАБОТАЮЩЕГО С СЕТЬЮ Козлов А.А.1, Шахова А.И.2 Email: Kozlov636@scientifictext.ru

'Козлов Александр Александрович — студент; 2Шахова Аделина Игоревна — студент, кафедра программной инженерии, Орловский государственный университет им. И.С. Тургенева, г. Орел

Аннотация: в статье анализируется влияние количества рабочих потоков данных на общее время выполнения программного кода на примере реальной задачи. Представлен алгоритм получения списков учебных занятий института ИПАИТ с сайта вуза — ОГУ имени И.С. Тургенева. Разобрана базовая реализация алгоритма, ее недостатки и применимость в реальных условиях. Также в статье представлено улучшение базового алгоритма, основанное на применении многопроцессового пулла, проведено тестирование улучшенного алгоритма и сравнение результатов работы программного кода на различном числе рабочих потоков. Ключевые слова: поток, процесс, ядро, запрос, алгоритм, зависимость, Интернет.

USE OF MULTITHREADING AS A METHOD OF INCREASING THE PRODUCTIVITY OF AN APPLICATION WORKING WITH THE NETWORK Kozlov А.А.1, Shahova АЛ.2

'Kozlov Aleksandr Aleksandrovich — Student; 2Shahova Adelina Igorevna — Student, DEPARTMENT OF ENGINEERING SCIENCE, OREL STATE UNIVERSITY NAMED AFTER I.S. TURGENEV, OREL

Abstract: the article analyzes influence of quantity of working data flows on the general time of program code productivity on the real task example. The algorithm of getting studies lists of IIAIT from the website of Orel State University named after I.S. Turgenev is presented. Basic realization of an algorithm, her shortcomings and applicability in actual practice is investigated. Also, the article presents the improvement of a basic algorithm based on application of a multithreading pool, testing of the improved algorithm is held. It also includes comparison of results of program's code work on various number of working streams.

Keywords: thread, process, core, request, algorithm, dependence, the Internet.

УДК 519.683.4

В настоящее время фирмы-производители процессоров значительно расширили свой ассортимент, данная комплектующая становится более сложной, увеличивается количество ядер вместе с общей производительностью ПК. Соответственно такие процессоры способны решать все более сложные задачи, оптимизировать вычисления, ускорять работу системы в целом.

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

На данный момент актуально проводить различные эксперименты, связанные с распараллеливанием, с целью оптимизировать выполнение программного кода и по максимуму использовать все возможности, которые предоставляет процессор.

Определимся с тем, что же является потоком. Поток представляет исполняемый программный код. Из основного потока могут быть запущены дополнительные (рабочие) потоки, которые будут выполняться параллельно с основным и другими потоками. Принципиальное отличие потока от процесса в том, что поток не имеет собственных ресурсов, поэтому все запущенные потоки будут выполняться в одном и том же адресном пространстве своего процесса. Итак, если в программе запускаются дополнительно к основному потоку ещё и рабочие потоки, то приложение становится многопоточным. Возникает вопрос об эффективности многопоточных приложений относительно однопоточных [1, с. 245].

В связи с этим цель работы - показать влияние количества рабочих потоков данных на общее время выполнения программы на примере реальной задачи.

Для достижения поставленной цели были решены следующие задачи:

• Получение списков учебных занятий института ИПАИТ с сайта вуза - ОГУ имени И.С. Тургенева с использованием различного числа рабочих потоков

• Анализ и сравнение результатов работы алгоритма

В рамках решения первой задачи изначально предстояло разобраться с основным алгоритмом получения учебных занятий. Следует отметить, что данные сразу же сохраняются в таблице базы данных SQLite. Требовалось найти простую и бесхитростную реализацию, не думая о конечном времени выполнения программного кода. В алгоритме можно выделить следующие шаги:

1. Получить список идентификаторов групп

2. Пока список групп не пуст:

2.1 Вычислить TIMESTAMP начала текущей недели

2.2 Построить URL-адрес запроса, основываясь на идентификаторе группы и вычисленном TIMESTAMP.

2.3 Выполнить HTTP-GET запрос.

2.4 Получить ответ, представляющий JSON-массив, элементами которого являются объекты-занятия.

2.5 Пока полученный ответ не пуст:

2.5.1 Извлечь необходимую информацию из объекта-занятия.

2.5.2 Отформатировать данные.

2.5.3 Сохранить информацию в таблице базы данных.

Проанализировав данный алгоритм, можем отметить некоторые факты:

• Выполнение программного кода происходит в одном рабочем потоке

• Выполнение HTTP-GET запросов разделено блоками форматирования ответа сервера и сохранения информации и таблице базы данных.

Взяв за основу вышеприведенные факты, можем заключить, что данная реализация алгоритма не является рациональной как по самой архитектуре построения программного кода, так и по времени выполнения программы.

В качестве решения данной проблемы было предложено:

1. Отказаться от последовательного циклического прохода по списку идентификаторов групп, что позволило исключить блоки программного кода между соседними HTTP-GET запросами и, как следствие, сократить время получения конечного списка учебных занятий.

2. Выполнить запуск многопроцессового пулла, «работники» которого выполняют одинаковый программный код, что позволило выполнять HTTP-GET запросы параллельно.

Тестирование конечного алгоритма было проведено на шести различных значениях числа «работников», а именно на 1, 2, 4, 8, 13 и 17. Результаты тестирования представлены в таблице 1.

Таблица 1. Зависимость времени выполнения алгоритма от количества «работников» многопроцессового

пула

Количество «работников» Время выполнения кода

1 Около 37 секунд

2 Около 30 секунд

4 Около 19 секунд

8 Около 12 секунд

13 Около 9 секунд

17 Около 8 секунд

Более наглядно данная зависимость представлена на иллюстрации (рис. 1).

Время, сек

Потоки/Время

40 35 30 25 20 15 10 5 0

Потоки/Время

- Экспоненциальная (Потоки/Время)

13

17

Рис. 1. Зависимость времени выполнения алгоритма от количества потоков

Проанализировав данный рисунок, можем увидеть экспоненциальную зависимость времени выполнения алгоритма от количества «работников» многопроцессового пулла. Это говорит о том, что постоянное увеличение количества потоков нецелесообразно, так как при больших значениях практически исчезает разница во времени выполнения кода.

Отдельное внимание стоит уделить классу выполненной задачи, а именно многопоточной обработке данных, получаемых по сети. Данная задача не является ядро-разделимой, соответственно имеют место эксперименты над размером пула и выбор оптимального числа «работников».

Также стоит учитывать фактор надежности и скорости работы кеширующих серверов по пути запроса, сетевых фаерволов и т.д. Немаловажным фактором, влияющим на конечное время выполнения программного кода, является интернет соединение. Учитывая это, можем заключить, что при одном и том же количестве «работников» многопроцессового пула в различные моменты времени результаты могут разниться.

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

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

Анализ и сравнение результатов тестирования работы алгоритма позволили нам судить в виде зависимости времени выполнения программного кода от количества потоков, понять, каким образом применять «распараллеливание» в реальных задачах.

1

2

4

8

Список литературы / References

1. Пятибратов А.А. Кириченко Л.П. Гудыно А.П. Вычислительные системы, сети и телекоммуникации / А.П. Москва: Кнорус, 2017. 272 с.

2. Пятибратов А.А. Таненбаум Э. Компьютерные сети. 5-е изд. / Э. Таненбаум, Д. Уэзеролл. СПб.: Питер, 2012. 350 с.

3. Уорен Генри С. Алгоритмические трюки для программистов / Генри С. Уорен. Москва: Вильямс, 2014. 259 с.

i Надоели баннеры? Вы всегда можете отключить рекламу.