Вы здесь

Примеры

Макроанализ

Граф вызовов
Связь с текстом
Разные методы представления
Вложность циклов
Операции: рост, из, в
Циклический профиль
Граф использования общей памяти

Микроанализ

Иерархический граф управления
Pardo циклы
Хождение по иерархии
Связь с исходным текстом
Разные термины представлдения
Разные типы зависимостей


Макроанализ

Граф вызовов

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

Связь с текстом

Есть возможность посмотреть исходный текст процедуры

Разные методы представления

Есть возможность представить тот же граф другим способом - в виде дерева или ... (как назвать второе представление не знаю, может быть "звездочка")

Вложность циклов

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

Операции: рост, из, в

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

Можно построить подграф, отображающий только те процедуры, которые вызывают выбранную процедуру (учитывая весь путь вызова) или которые вызываются из выбранной процедуры.

 

 

Циклический профиль

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

Граф использования общей памяти

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

Микроанализ

Иерархический граф управления


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

Pardo циклы


Мы можем определить, какие циклы являются параллельными (pardo). Они выделяются другим цветом.

Можно добавить воды про pardo, зависимости и как это круто все сразу видеть.

Хождение по иерархии

 

Структура каждой циклической вершины также может быть изображена с помощью аналогичного графа. На данном рисунке изображена структура вершины предыдущего графа, обозначенного цифрой 3. Это структура первого цикла предыдущего графа.

 

Связь с исходным текстом


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

Разные термины представления

 

 

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

Разные типы зависимостей

 

Система позволяет также построить граф зависимости по данным по всем 4 типам зависимостей или их комбинациям.Граф может быть построен с использованием графа алгоритма, построенного с помощью V-Ray технологии или без его использования, так как не всегда возможно построение графа алгоритма. На этом рисунке показан граф "истинной" зависимости (Запись-чтение) фрагмента программы и соответствующий исходный текст. Оператор цикла, выделенный зеленным цветом, не входит в изображаемый фрагмент. Граф построен с использованием графа алгоритма.
А это граф "истинной" зависимости того же фрагмента, построенный без графа алгоритма. Они немного различаются, так как при использовании графа алгоритма по возможности учитывается и индексные выражения массивов.
На этих рисунках изображена "антизависимость" (чтение-запись) данных того же фрагмента, построенного с помощью графа алгоритма и...

без него.