Санкт-Петербургский Государственный Электротехнический Университет
Кафедра МОЭВМ
Дисциплина: Метрология программного обеспечения
Отчет
По лабораторной работе №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
Наибольшее время занимают операции вывода, сравнения, обращения к элементу массива.