Transcript
Page 1: СИСТЕМА АНАЛИЗА ПРОИЗВОДИТЕЛЬНОСТИ ПРОГРАММОГО КОДА

ЭВМ и программная обработка данных

89

Danilkin Fiodor Alekseevich, doctor of technical science, professor, [email protected], Russia, Tula, Tula State University,

Novikov Aleksey Vladimirovich, candidate of technical science, docent,

[email protected] , Russia, Tula, Tula State University,

УДК 004.415.52

СИСТЕМА АНАЛИЗА ПРОИЗВОДИТЕЛЬНОСТИ ПРОГРАММОГО КОДА

Е.И. Дараган

Рассмотрены особенности анализа производительности программного кода,

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

Ключевые слова: программа, код, стоимость, операция. Иерархическая структура, присущая всем алгоритмам и всегда во-

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

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

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

Page 2: СИСТЕМА АНАЛИЗА ПРОИЗВОДИТЕЛЬНОСТИ ПРОГРАММОГО КОДА

Известия ТулГУ. Технические науки. 2013. Вып. 9. Ч.2

90

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

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

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

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

Особое место в анализе программы занимает определение показа-телей трудности ее выполнения.Трудность зависит от различных факторов. Основными из них являются время выполненияи стоимость выполнения операций, алгоритма.Одним из главных вопросов при анализе производи-тельности программы, каким образом программа расходует время своего выполнения? Для ответа на этот вопрос,необходимо определить в исход-ной программе множество состояний [2, 3], в которых может находиться программа во время своего выполнения. Если – такое

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

Формально это описание можно представить как последовательность ,

где tj-продолжительность j-ого интервала выполнения состоянииSij

Page 3: СИСТЕМА АНАЛИЗА ПРОИЗВОДИТЕЛЬНОСТИ ПРОГРАММОГО КОДА

ЭВМ и программная обработка данных

91

Если для двух j и k = 1,2, …, n определить

то общее время, потраченное на состояние Si во время выполнения про-граммы можно получить

где r – число интервалов, на которое разделяется все время выполнения. Общее время выполнения определяется по формуле (1)

Составляющая программу информация может быть разделена на

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

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

1.Арифметические операции; 2.Вызовы подпрограмм и функций; 3.Операции с памятью; 4.Логические операции. Для каждой категории характерны определенные наборы операций,

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

Page 4: СИСТЕМА АНАЛИЗА ПРОИЗВОДИТЕЛЬНОСТИ ПРОГРАММОГО КОДА

Известия ТулГУ. Технические науки. 2013. Вып. 9. Ч.2

92

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

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

Рис.1. Структурная схема базы данных

Табличный способ хранения описанных выше данных представляет

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

Рис.2. Пример информационного графа программы

Page 5: СИСТЕМА АНАЛИЗА ПРОИЗВОДИТЕЛЬНОСТИ ПРОГРАММОГО КОДА

ЭВМ и программная обработка данных

93

Система интегрирована в с модулями, описанными в [5]. В допол-нение к процессупостроения графа информационных зависимостей [4] (рис. 2),предлагается следующая методика: в построенном дереве состоя-ний, последовательно, вне зависимости от порядкового номера состояний, осуществлять анализ кода программы. Анализ заключается в выявлении в нем основных операций, которые были определены в системе и включены в активную конфигурацию. В системе имеется возможность просмотра де-тализированной информации о каждом из выделенных на этапе анализа кода состояний (рис. 3).

Рис.3. Пример расчета стоимость выполнения операций алгоритма

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

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

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

1. Кнут Д., Грэхем Р. Конкретная математика. Основаниеинформа-тики. Concrete Mathematics.A Foundation for Computer Science. М.: Мир; Бином. Лаборатория знаний, 2006. 703 с.

2. Арапбаев Р.Н. Анализ зависимостей по данным: тесты на зависи-мость и стратегии тестирования // Диссертация на соискание ученой степени кандидата физико-математических наук.

3. Дараган Е.И. Параллельные вычисления и верификация программ // Известия ТулГУ. Серия: Технические науки. Вып. 5. Тула: Изд. ТулГУ,

Page 6: СИСТЕМА АНАЛИЗА ПРОИЗВОДИТЕЛЬНОСТИ ПРОГРАММОГО КОДА

Известия ТулГУ. Технические науки. 2013. Вып. 9. Ч.2

94

2012. С. 95-101. 4. Ивутин А.Н., Дараган Е.И. Построение схемы распараллеливания

последовательного алгоритма программы // ИзвестияТулГУ. Серия: Тех-нические науки. Вып. 5. Тула: Изд. ТулГУ, 2012. С. 101-109.

5. Ивутин А.Н., Дараган Е.И. Автоматизированый анализ последо-вательного кода программы // Известия ТулГУ. Серия: Технические науки. Вып. 10. Тула: Изд. ТулГУ, 2012. С. 184-189.

6. Ивутин А.Н., Дараган Е.И. Построение схемы распараллеливания последовательного алгоритма программы // ИзвестияТулГУ. Серия: Тех-нические науки. Вып. 5. Тула: Изд. ТулГУ, 2012. С. 101-109.

Дараган Евгений Игоревич, аспирант, [email protected], Россия, Тула, Тульский государственный университет

THE SYSTEM PERFORMANCE ANALYSIS SOFTWARE

E.I. Daragan

The features of the analysis of the performance of code programs. Described is a me-thod implementation and evaluation of the cost of operations code for the abstract computing system.

Key words: program code, the cost of the operation. Daragan Evgeniy Igorevich, postgraduate, [email protected], Russia, Tula,

Tula State University

УДК 004.93

О ЛОКАЛИЗАЦИИ ОТРИЦАТЕЛЬНЫХ СОБСТВЕННЫХ ЗНАЧЕНИЙ В МАТРИЦАХ ПАРНЫХ СРАВНЕНИЙ

С.Д. Двоенко, Д.О. Пшеничный

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

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

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


Recommended