УДК 004.42

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

Ерошенко Яна Борисовна – ассистент кафедры Математического и программного обеспечения информационных систем Белгородского государственного национального исследовательского университета.

Самхарадзе Коба Кобаевич – студент кафедры Математического и программного обеспечения информационных систем Белгородского государственного национального исследовательского университета.

Аннотация: В статье описан способ и проведён эксперимент оптимального использования вычислительных ресурсов в программировании на основе языков программирования С++ и JavaScript. Для этого была поставлена и решена задача с помощью рассматриваемых языков программирования, проанализированы результаты и занесены в таблицы, сформулирован вывод по результатам анализа и построен график. В заключении приведены сферы, в которых данный метод является эффективным.

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

Сегодня – в эпоху информационного бума – программирование занимает одно из ведущих мест среди остальных отраслей науки и техники.

В обычном понимании, программирование – это процесс создания компьютерных программ. Программирование основывается на использовании языков программирования, на которых записываются инструкции для компьютера. Программы можно писать непосредственно для различного рода ЭВМ и для сети Интернет (1, 84).

В настоящее время не достаточно писать программу, которая просто будет выполняться без ошибок. Код должен быть качественным, он должен быть «чистым» и читаться как журнал, как обычная газета, он должен быть понятен. Кроме этого, качество программирования зависит от эффективного использования имеющихся вычислительных ресурсов (2).

Проведем эксперимент.

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

Для решения данной задачи необходимо знать ширину посадочного места на штанге, ширину каждого утяжелителя, вес штанги, а также вес каждого утяжелителя и их количество (данном случае спортсмен имеет 1 штангу и 4 утяжелителя).

Для начала решим эту задачу на языке программирования С++ (см. рисунок 1), замерим время генерации комбинаций и размер выделяемой памяти (см. таблица 1).

Рисунок 1. Листинг программы на языке С++.

Проанализируем данный код.

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

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

После заполнения этого массива результат будет не упорядочен. Для упорядочивания данных в массиве используется алгоритм сортировки «пузырьком». Затем данные из массива выводятся на экран. При этом очень важным является тот факт, что память, выделенная под данный двумерный массив, необходимо обязательно освободить. В противном случае, при многократном запуске программы может произойти сбой в работе ЭВМ из-за переполнения памяти.

Таблица 1. Время работы и объём выделяемой памяти программы на языке С++.

№ п/п

Входные данные, кол-во утяжелителей в шт по

Выходные данные, кол-во комбинация

Время расчёта, мс

Выделяемая память, байт

0,5 кг

1,25 кг

2,5 кг

5 кг

1

4

0

0

0

3

20

120

2

4

4

0

0

9

46

360

3

4

4

4

0

25

153

1000

4

4

4

4

4

53

482

2120

5

8

8

8

8

81

500

3240


Рассмотрим второй способ, при котором для решения поставленной задачи применяется язык программирования JavaScript (см. рисунок 2), замерим время генерации комбинаций и размер выделяемой памяти (см. таблица 2).

Рисунок 1. Листинг программы на языке JavaScript.

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

Также как и в предыдущем случае, данные не упорядочены. Их упорядочивание происходит после вывода на экран тем же алгоритмом с использованием технологии DOM.

Таблица 2. Время работы и размер выделяемой памяти программы на языке JavaScript.

№ п/п

Входные данные, кол-во утяжелителей в шт по

Выходные данные, кол-во комбинация

Время расчёта, мс

Выделяемая память, байт

0,5 кг

1,25 кг

2,5 кг

5 кг

1

4

0

0

0

3

4

8

2

4

4

0

0

9

17

8

3

4

4

4

0

25

93

8

4

4

4

4

4

53

501

8

5

8

8

8

8

81

1141

8


Отличительной особенностью кода на языке JavaScript является отсутствие выделения динамической памяти, что ведет к эффективности ее использования (см. рисунок 3).

Рисунок 3. Размер выделяемой памяти программой на языках С++ и JavaScript.

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

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

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

  1. Страуструп, Бьярне. Программирование: принципы и практика с использованием С++, [Текст]: научно-популярное издание / Бьярне Страуструп. – М.: Изд-во «ИД Вильямс», 2016. – 1328 с.
  2. Информационно-образовательный ресурс «СтатМод.ру» [Электронный ресурс]: Программирование / ООП: некоторые принципы разработки программ на C++. – Режим доступа: http://www.statmod.ru/3-5/programming/oop_potapov/index.htm