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

Презентация:



Advertisements
Похожие презентации
Представление чисел. Использование SIMD-расширений x86. Функции замера времени. Куликов Игорь Михайлович
Advertisements

Измерение времени в ЭВМ С.Е. Киреев, В.П. Маркова, М.Б. Остапкевич, В.А. Перепелкин Новосибирск 2013 НГТУ Кафедра параллельного программирования.
Лекция 2Лекция 2Структура программы Директивы препроцессора main () { Описания переменных Операторы }
1. a=? b=? c=? {int a, b, c; a=(b=2+3)/2 - 4+(c=5%2); printf("%d %d %d \n", a, b, c); }
1. a=? b=? c=? {int a, b, c; a=(b=2+3)/2 - 4+(c=5%2); printf("%d %d %d \n", a, b, c); }
Инструкции C++ Условная инструкция Формат: if (условие) оператор; else оператор; Пример: if (i!=0) { if (j) j++; if(k) k++; else if(p) k--; } else i--;
Часть 1: «Основы программирования». Содержание Основные понятия. Структура программы. Ввод-вывод Программирование циклов. Операторы цикла while, for и.
Функции Лекция 8. Назначение функций Функции - самостоятельные программные единицы, спроектированные для решения конкретной задачи. Функции по структуре.
Лекция 2 Функции библиотек языка C. stdio.h Заголовочный файл стандартной библиотеки языка C. Содержит определения констант, объявления функций и типов.
Лекция 1 Классификация С++. Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция.
Лабораторная работа 4. Подпрограммы. Задание на лабораторную работу Написать программу, реализующую хранение информации, указанной в вариантах индивидуальных.
Лекция 3 ПЕРВЫЕ ПРОГРАММЫ, ВВОД/ВЫВОД В ЯЗЫКЕ С++
Лекция 2 С => C++ => C# Большие и маленькие буквы различаются (main, Main, MAIN, mAin – разные имена) После каждого оператора ставится точка с запятой.
Инструкции C++ Условная инструкция Формат: if (условие) оператор; else оператор; Пример: if (i!=0) { if (j) j++; if(k) k++; else if(p) k--; } else i--;
Многопоточное программирование. Виды параллелизма. Общая память Распределенная память.
Система межпроцессного взаимодействия IPC. Общие концепции #include key_t ftok ( char * filename, char proj ) filename строка, cодержащая имя файла proj.
Взаимодействие процессов: сокеты.
2.Система межпроцессного взаимодействия IPC 2.1.Состав, общие концепции 2.2.Очередь сообщений 2.3.Разделяемая память 2.4.Массив семафоров Взаимодействие.
Стадник Е. Г. ФПМИ НГТУ Руководитель: Городничев М.А., м.н.с. ИВМ и МГ СО РАН.
3. Механизм сокетов 3.1. Общие концепции 3.2. Интерфейсные функции для работы с сокетом Создание сокета Связывание и установление соединения.
Транксрипт:

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

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

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

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

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

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

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

Пример использования команды 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; }

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

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

Пример использования функции gettimeofday #include struct timeval tv1,tv2,dtv; struct timezone tz; void time_start() { 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

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

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

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

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

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

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