Скачиваний:
15
Добавлен:
01.05.2014
Размер:
90.11 Кб
Скачать

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

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

  1. Профилирование программы test_cyc.C tbs (Time Based Sampling)

Address Line Clockticks Source

1 #define Size 1000000

2 " int i, tmp, dim[Size];"

3

4 void main()

01:0010 5 {

01:0028 6 1 for(i=0;i<Size/10;i++){ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };

01:0080 7 2 for(i=0;i<Size/5;i++){ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };

01:00D8 8 4 for(i=0;i<Size/2;i++){ tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };

01:0130 9 8 for(i=0;i<Size;i++) { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };

01:0188 10 for(i=0;i<Size/10;i++)

01:01AD 11 1 { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };

01:01E0 12 for(i=0;i<Size/5;i++)

01:0205 13 1 { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };

01:0238 14 1 for(i=0;i<Size/2;i++)

01:025D 15 3 { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };

01:0290 16 2 for(i=0;i<Size;i++)

01:02B5 17 5 { tmp=dim[0]; dim[0]=dim[i]; dim[i]=tmp; };

01:02E8 18 1 for(i=0;i<Size/10;i++)

01:030D 19 { tmp=dim[0];

01:0319 20 dim[0]=dim[i];

01:032B 21 dim[i]=tmp;

01:033E 22 };

01:0340 23 for(i=0;i<Size/5;i++)

01:0365 24 { tmp=dim[0];

01:0371 25 1 dim[0]=dim[i];

01:0383 26 dim[i]=tmp;

01:0396 27 };

01:0398 28 2 for(i=0;i<Size/2;i++)

01:03BD 29 1 { tmp=dim[0];

01:03C9 30 dim[0]=dim[i];

01:03DB 31 dim[i]=tmp;

01:03EE 32 1 };

01:03F0 33 for(i=0;i<Size;i++)

01:0415 34 1 { tmp=dim[0];

01:0421 35 3 dim[0]=dim[i];

01:0433 36 2 dim[i]=tmp;

01:0446 37 2 };

01:0448 38 }

Как и следовало ожидать, существует прямо пропорциональная зависимость между временем выполнения цикла и числом повторений цикла. Также из результатов видно, что порядок и способ записи операторов не влияет на скорость выполнения программы.

Соседние файлы в папке Лабораторная работа №21