Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №2.doc
Скачиваний:
22
Добавлен:
01.05.2014
Размер:
321.54 Кб
Скачать

Санкт-Петербургский Государственный Электротехнический Университет

Кафедра МОЭВМ

Дисциплина: Метрология программного обеспечения

Отчет

По лабораторной работе №2

«Измерение характеристик динамической сложности программ

с помощью профилировщика VTune»

Вариант 5

Выполнил:

студент гр. 3305

Воронин С.Ю

Проверила:

Боханова Е.В.

Санкт-Петербург

2007 Постановка задачи

1. Ознакомиться с документацией на VTune и выполнить

для программы prost0.c следующее задание:

- компиляция с использованием автономного отладчика;

- профилирование по времени;

- профилирование по частоте;

- профилирование по средним временам на 1 вызов;

- запись результатов профилирования в файл для печати.

2. Выполнить тестовые программs test_cy1.c, test_cyc.c,

test_sub.c c анализом параметров повторения циклов и проверкой

их влияния на точность и чувствительность профилирования.

3. Скомпилировать и выполнить под управлением профилировщика VTune

программы на Паскале и С, разработанные в 1-ой лабораторной работе.

Снять все виды профилей, выявить "узкие места", ввести в

программы усовершенствования и получить новые профили. Если

времена выполнения рассматриваемых при профилировании фрагментов

программы малы для учета VTun'ом, ввести вспомогательное зацикливание

программы.

Выполнение работы

В ходе лабораторной работы использовался 1 вид профилирования TBS(timebasedsampling).

VTuneвыдал сообщение, что профилированиеEBSневозможно осуществить на ноутбуке.

1.Prost0.C

- компиляция с использованием автономного отладчика;

Программа была откомпилирована в среде visualc++ 6.0.

- профилирование по времени;

Параметры:

Произведение измерений через регулярные промежутки времени с использованием обычного таймера. (TBS – Time Based Sampling)

Результаты профилирования:

Address Line Clockticks Source

1 #include "stdio.h";

2

3 int primes[1000];

4 #define MAXPRIMES 1000

5

6 main()

01:0010 7 {

8 int j;

9 " int lastprime, curprime;"

10

01:0028 11 primes[0] = 2;

01:0032 12 primes[1] = 3;

01:003C 13 lastprime = 1;

01:0043 14 curprime = 3;

15

01:004A 16 " printf("prime %d = %d\n", 0, primes[0]);"

01:005F 17 " printf("prime %d = %d\n", 1, primes[1]);"

18

01:0075 19 while(curprime < MAXPRIMES)

20 {

01:007E 21 for(j = 0; j <= lastprime; j++)

01:0098 22 1 if((curprime % primes[j]) == 0)

23 {

01:00AA 24 curprime += 2;

25

01:00B3 26 break;

27 }

01:00B5 28 if(j <= lastprime)

01:00BF 29 continue;

01:00C1 30 lastprime++;

01:00CA 31 " printf("prime %d = %d\n", lastprime, curprime);"

01:00DF 32 primes[lastprime] = curprime;

01:00EC 33 curprime += 2;

01:00F5 34 }

01:00FA 35 }

36

Количество sample в процентах:

Address Line Clockticks Source

1 #include "stdio.h";

2

3 int primes[1000];

4 #define MAXPRIMES 1000

5

6 main()

01:0010 7 {

8 int j;

9 " int lastprime, curprime;"

10

01:0028 11 primes[0] = 2;

01:0032 12 primes[1] = 3;

01:003C 13 lastprime = 1;

01:0043 14 curprime = 3;

15

01:004A 16 " printf("prime %d = %d\n", 0, primes[0]);"

01:005F 17 " printf("prime %d = %d\n", 1, primes[1]);"

18

01:0075 19 while(curprime < MAXPRIMES)

20 {

01:007E 21 for(j = 0; j <= lastprime; j++)

01:0098 22 "0,21%" if((curprime % primes[j]) == 0)

23 {

01:00AA 24 curprime += 2;

25

01:00B3 26 break;

27 }

01:00B5 28 if(j <= lastprime)

01:00BF 29 continue;

01:00C1 30 lastprime++;

01:00CA 31 " printf("prime %d = %d\n", lastprime, curprime);"

01:00DF 32 primes[lastprime] = curprime;

01:00EC 33 curprime += 2;

01:00F5 34 }

01:00FA 35 }

36

Наибольшее время занимают операции вывода, сравнения, обращения к элементу массива.