Научная статья на тему 'АНАЛИЗ И ОЦЕНКА МНОГОПОТОЧНОСТИ ДЛЯ ЭФФЕКТИВНОСТИ ПРИЛОЖЕНИЙ'

АНАЛИЗ И ОЦЕНКА МНОГОПОТОЧНОСТИ ДЛЯ ЭФФЕКТИВНОСТИ ПРИЛОЖЕНИЙ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
16
3
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
многопоточность / процесс / поток / программирование / оптимизация / multithreading / process / flow / programming / optimization

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Абакаров Г.М.

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

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

MULTITHREADING ANALYSIS AND EVALUATION FOR APPLICATION EFFICIENCY

This article analyzes the impact of multithreading on program performance in the context of computers with multicore processors. The author considered in detail the key aspects, including working with threads, processes, and evaluating the effectiveness of program execution. In the context of this text, a process is defined as a program perceived by the operating system as a task and managed by a task supervisor. Processes receive the necessary resources, including the memory address space, from the operating system. A thread, in turn, is a running program code, the launch of which begins with the execution of the main thread. The main thread initiates, executes, and terminates the process, and, if necessary, can launch additional (worker) threads that can run in parallel.

Текст научной работы на тему «АНАЛИЗ И ОЦЕНКА МНОГОПОТОЧНОСТИ ДЛЯ ЭФФЕКТИВНОСТИ ПРИЛОЖЕНИЙ»

УДК 004.021

Абакаров Г.М.

магистрант,

Дагестанский государственный технический университет (г. Махачкала, Россия)

АНАЛИЗ И ОЦЕНКА МНОГОПОТОЧНОСТИ ДЛЯ ЭФФЕКТИВНОСТИ ПРИЛОЖЕНИЙ

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

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

Ключевые слова: многопоточность, процесс, поток, программирование, оптимизация.

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

Цель статьи - анализ воздействия многопоточности на производительность программы на компьютере с многоядерным процессором. Приведен пример реализации программы как однопоточной, так и многопоточной на языке программирования C#. Ключевые аспекты включают в себя работу с потоками, процессами, многопоточность и оценку эффективности. Процесс в данном контексте представляет собой программу (приложение), воспринимаемую операционной системой как задачу и управляемую супервизором задач. Операционная система выделяет необходимые ресурсы процессу, включая адресное пространство процесса, представляющее область памяти. Под потоком понимается выполняющийся программный код. Запуск процесса начинается с выполнения основного потока, представленного главной функцией main (или WinMain в С/С++) и Main() в C#. Этот основной поток инициирует, выполняет и завершает работу процесса. Возможно, запуск дополнительных (рабочих) потоков из основного потока, которые могут выполняться параллельно с основным и другими потоками. В отличие от процесса, поток не обладает собственными ресурсами, и все запущенные потоки выполняются в одном и том же адресном пространстве своего процесса. Таким образом, если помимо основного потока в программе запускаются дополнительные рабочие потоки, приложение становится многопоточным. Возникает вопрос об эффективности многопоточных приложений по сравнению с однопоточными. При анализе эффективности многопоточных приложений относительно однопоточных важно учесть, что дополнительные (рабочие) потоки могут выполняться параллельно, увеличивая общую скорость выполнения задачи. Это особенно заметно при выполнении вычислительно интенсивных операций, таких как вычисление интеграла, где разделение задачи на подзадачи для многопоточного выполнения может привести к улучшению производительности. Однако стоит отметить, что при использовании многопоточности необходимо учитывать возможные проблемы синхронизации и доступа к общим ресурсам, таким как область памяти. Несоблюдение корректной синхронизации может привести к гонкам данных и другим

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

В данном контексте был исследован метод вычисления интеграла, который многократно применялся на компьютере с процессором Intel Core i5-4170 CPU 3, 5 GHz (2 ядра, 4 логических процессора). Реализация обеих программ (однопоточной и многопоточной) выполнена на языке программирования C#. В случае многопоточной программы было использовано 4 потока для параллельного выполнения вычислений.

Эффективность программ

0,08 0,07 0,06

и 0,05 * *

| 0,04 ю 0,03 0,02 0,01 0

400 800 1200 1600 2000

Количество вычислений,шт

однопоточная ^^«многопоточная

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

и

X X

3 о

X

5

Рис. 2. Относительная эффективность многопоточных и однопоточных приложений.

Выводы. Из представленных на рисунках графиках можно сделать вывод, что при ограниченном объеме вычислений многопоточная версия программы проявляет даже более низкую скорость выполнения по сравнению с однопоточной. Переходная точка для данного варианта приложения наблюдается примерно при 1200 вычислениях интеграла. Однако с увеличением объема вычислений эффективность многопоточной версии по сравнению с однопоточной существенно улучшается. На рисунке 2 представлено отношение времени выполнения многопоточной и однопоточной версий приложения при значительных объемах вычислений. Заметно, что данное отношение стремится к числу логических процессоров компьютера, что указывает на высокую (почти 100%) загрузку многоядерного процессора при работе многопоточного приложения. Эти результаты подчеркивают важность оптимизации и адаптации многопоточных приложений к конкретным характеристикам аппаратного обеспечения. Необходимость тщательной настройки числа потоков и синхронизации становится ключевым моментом для достижения оптимальной производительности в зависимости от характера задачи и доступных вычислительных ресурсов.

Относительная эффективность

Количество вычислений

СПИСОК ЛИТЕРАТУРЫ:

1. Цукалос М. Golang для профи: работа с сетью, многопоточность, структуры данных и машинное обучение с Go / М. Цукалос. - СПб. : Питер, 2020. - 720 с.;

2. Медведев В. И. Особенности объектно-ориентированного программирования на C++/CLI, C# и Java. 2-е изд. , испр. и доп. Казань: РИЦ «Школа», 2010. 444 с.;

3. [Электронный ресурс] URL: https://www.albahari.com/threading/;

4. Танвар, Ш. Параллельное программирование на C# и . NET Core / Ш. Танвар. - Москва : ДМК Пресс, 2022. - 272 с. - ISBN 978-5-97060-851-7;

5. [Электронный ресурс] URL: https://learn.microsoft.com/m-ru/dotnet/standard/threading/threads-and-threadi;

6. [Электронный ресурс] URL: https://metanit.com/sharp/tutorial/;

7. Стивен Клири. Concurrency in C# Cookbook: учеб. -метод. пособие для студентов. 2-е изд. СПб. : O'Reilly Media, 2018. 254 с.;

8. Террелл Рикардо. Конкурентность и параллелизм на платформе . NET. Паттерны эффективного проектирования. СПб. : ТИУ, 2019. 624 с.;

9. Шилдт Герберт. Полное руководство С# 4. 0. М. : ООО И. Д. Вильямс, 2011. 1465 с.

Abakarov G.M.

Dagestan State Technical University (Makhachkala, Russia)

MULTITHREADING ANALYSIS AND EVALUATION FOR APPLICATION EFFICIENCY

Abstract: this article analyzes the impact of multithreading on program performance in the context of computers with multicore processors. The author considered in detail the key aspects, including working with threads, processes, and evaluating the effectiveness of program execution.

In the context of this text, a process is defined as a program perceived by the operating system as a task and managed by a task supervisor. Processes receive the necessary resources, including the memory address space, from the operating system. A thread, in turn, is a running program code, the launch of which begins with the execution of the main thread. The main thread initiates, executes, and terminates the process, and, if necessary, can launch additional (worker) threads that can run in parallel.

Keywords: multithreading, process, flow, programming, optimization.

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