Функции замера времени

Содержание

Слайд 2

Назначение функций замера времени

Функции замера времени необходимы для оценки эффективности работы алгоритма,

Назначение функций замера времени Функции замера времени необходимы для оценки эффективности работы
процессора, памяти, файловой системы, сети …

Слайд 3

Методика тестирования
Фиксирование времени начала теста
Запуск тестируемой операции
Фиксирование времени окончания теста
Отображение результатов теста

Методика тестирования Фиксирование времени начала теста Запуск тестируемой операции Фиксирование времени окончания теста Отображение результатов теста

Слайд 4

Функция clock

Библиотечная функция определена в заголовочном файле time.h
Прототип clock_t clock();
Возвращает время, прошедшее

Функция clock Библиотечная функция определена в заголовочном файле time.h Прототип clock_t clock();
с момента запуска программы в единицах 1/CLK_TCK секунды
Используется в Windows

Слайд 5

Пример использования функции clock

#include
#include
int main()
{ double pi;
clock_t t;
t=clock(); // начало

Пример использования функции clock #include #include int main() { double pi; clock_t
замера времени
pi = pi_calculate();
t=clock()-t; // окончание замера времени
printf("Time: %lf msec Pi = %lf\n",t*1000.0/CLK_TCK,pi);
return 0;
}

Слайд 6

Достоинства и недостатки функции clock

Достоинства:
высокая платформенная независимость
Недостатки:
низкая точность, при высокой загрузке процессора

Достоинства и недостатки функции clock Достоинства: высокая платформенная независимость Недостатки: низкая точность,
– неприемлемая точность, так как измеряется интервал времени, во время которого помимо процесса исследуемой программы исполнялись и другие процессы

Слайд 7

Команда RDTSC

Платформенно-зависимый вариант для x86
Возвращает число тактов с момента запуска процессора
Используется в

Команда RDTSC Платформенно-зависимый вариант для x86 Возвращает число тактов с момента запуска
Windows и UNIX для процессоров Intel

Слайд 8

Пример использования команды RDTSC

#include
#define FREQ 1995 // Частота процессора, MHz
// функция возвращает

Пример использования команды RDTSC #include #define FREQ 1995 // Частота процессора, MHz
значение счетчика тактов процессора
unsigned long tick()
{
__asm rdtsc
}
int main(int argc, char* argv[])
{
unsigned long t1,t2;
double t, pi;
t1=tick(); // начало замера
pi = pi_calculate();
t2=tick(); // конец замера
t=(double)(t2-t1)/FREQ;
printf("Time: %ld mcsec Pi = %lf\n",t,pi);
return 0;
}

Слайд 9

Достоинства и недостатки команды RDTSC

Достоинства:
максимально возможная точность
Недостатки:
зависимость от архитектуры процессора
ухудшение точности при

Достоинства и недостатки команды RDTSC Достоинства: максимально возможная точность Недостатки: зависимость от
высокой загрузке процессора

Слайд 10

Функция gettimeofday

Библиотечная функция определена в заголовочном файле sys\time.h
Прототип int gettimeofday(struct timeval* tv,

Функция gettimeofday Библиотечная функция определена в заголовочном файле sys\time.h Прототип int gettimeofday(struct
struct timezone* tz);
Время можно вычислить из структуры timeval
Используется в UNIX

Слайд 11

Пример использования функции gettimeofday

#include
struct timeval tv1,tv2,dtv;
struct timezone tz;
void time_start() {

Пример использования функции gettimeofday #include struct timeval tv1,tv2,dtv; struct timezone tz; void
gettimeofday(&tv1, &tz); }
double time_stop()
{
gettimeofday(&tv2, &tz);
dtv.tv_sec= tv2.tv_sec - tv1.tv_sec;
dtv.tv_usec=tv2.tv_usec - tv1.tv_usec;
if(dtv.tv_usec<0) { dtv.tv_sec--; dtv.tv_usec+=1000000; }
return dtv.tv_sec*1000.0+dtv.tv_usec/1000.0;
}

Слайд 12

Пример использования функции gettimeofday

#include
int main()
{ double pi;
time_start(); // начало замера времени
pi

Пример использования функции gettimeofday #include int main() { double pi; time_start(); //
= pi_calculate();
// окончание замера времени
printf("Time: %lf msec Pi = %lf\n",time_stop(),pi);
return 0;
}

Слайд 13

Достоинства и недостатки функции gettimeofday

Достоинства:
высокая платформенная независимость
Недостатки:
низкая точность, при высокой загрузке процессора

Достоинства и недостатки функции gettimeofday Достоинства: высокая платформенная независимость Недостатки: низкая точность,
– неприемлемая точность, так как измеряется интервал времени, во время которого помимо процесса исследуемой программы исполнялись и другие процессы

Слайд 14

Функция times

Библиотечная функция определена в заголовочном файле sys/times.h
Прототип clock_t times(struct tms *buf);
Возвращает

Функция times Библиотечная функция определена в заголовочном файле sys/times.h Прототип clock_t times(struct
время, прошедшее с момента запуска программы в единицах 1/CLK_TCK секунды
Используется в UNIX

Слайд 15

Пример использования функции times

#include
#include
struct tms tmsBegin,tmsEnd;
void time_start() { times(&tmsBegin); }
double

Пример использования функции times #include #include struct tms tmsBegin,tmsEnd; void time_start() {
time_stop()
{ times(&tmsEnd);
return ((tmsEnd.tms_utime-tmsBegin.tms_utime)+
(tmsEnd.tms_stimetmsBegin.tms_stime))*1000.0/CLK_TCK;
}

Слайд 16

Пример использования функции times

#include
int main()
{ double pi;
time_start(); // начало замера времени
pi

Пример использования функции times #include int main() { double pi; time_start(); //
= pi_calculate();
// окончание замера времени
printf("Time: %lf msec Pi = %lf\n",time_stop(),pi);
return 0;
}
Имя файла: Функции-замера-времени.pptx
Количество просмотров: 97
Количество скачиваний: 0