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

Выполнение работы Профилирование программыProst0.C

Для всех программ в данной работе проводились 2 вида профилирования:

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

  • EBS (Event Based Sampling)- в данном режиме моменты измерений определяются событиями, которые генерируются процессором. По умолчанию профилировщик реагирует только на событие Clockticks. Измерения проводятся при интервале 0.001 мсек дляTBS.

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

EBS (Event Based Sampling)

Address Line Clockticks Source

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 1 " printf("prime %d = %d\n", 0, primes[0]);"

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

18

01:0075 19 while(curprime < MAXPRIMES)

20 {

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

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

23 {

01:00AA 24 1 curprime += 2;

25

01:00B3 26 break;

27 }

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

01:00BF 29 continue;

01:00C1 30 lastprime++;

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

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

01:00EC 33 1 curprime += 2;

01:00F5 34 }

01:00FA 35 }

36

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