Методы измерения времени работы программы
Ознакомление с результатами тестирования таймеров. Определение главных способов проверки характеристик программного и аппаратного обеспечения касательно быстродействия. Расчет разницы данных счётчика тактов. Получение значения системного таймера.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 03.12.2018 |
Размер файла | 272,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Московский технологический университет
Методы измерения времени работы программы
Рубрика: 05.00.00 технические науки
Лохматов Степан Юрьевич, студент 4 курса
Светлов Сергей Викторович, студент 4 курса
Калач Геннадий Петрович, кандидат военных наук, доцент военной кафедры
Аннотация
Данная статья посвящена обзору и описанию некоторых методов измерения времени работы программ. Произведено тестирование таймеров.
Ключевые слова: clock_get_time, rdtsc, методы измерения, программа
1. Методология и способы измерений
Одним из главных способов проверки характеристик программного и аппаратного обеспечения касательно быстродействия является измерение времени прикладной программы или ее составных частей.
Подобная проверка целесообразна для нахождения мест в программе или ее алгоритме, которым необходима оптимизация, а также помогает судить о реальных производительных качествах компьютера. На время работы программы влияют различные факторы: характеристики программы, ОС компьютера, работающие процессы и пр.
Для выявления интересующих характеристик существуют некоторые приемы, которые позволяют снизить воздействие нежелательных факторов. Время выполнения тестируемой программы определяется по показаниям таймера (в начале выполнения и после завершения программы). Стоит отметить, что замер времени всегда происходит с некоторой погрешностью.
Теперь подробно рассмотрим способы снижения влияния подобных нежелательных факторов.
1. Многократное измерение. Время выполнения программы измеряется несколько раз. Обычно, из-за влияния сторонних факторов, измерения отличаются, а время работы самой программы не изменяется. Наиболее точным из всех полученных измерений будет являться минимальное значение.
2. Исключение из измерения стадий инициализации и завершения. Если необходимо измерить время выполнения некоторой части кода, то будет рационально вынести весь код, предшествующий вызову этой части, за первый замер времени, а следующий замер провести сразу после завершения работы программы.
3. Снижение влияния кода функции измерения времени. Код снятия показаний таймера выполняется не мгновенно, т.е. в измеряемый интервал времени частично попадает и время его исполнения, такое влияние следует уменьшить. Для этого достаточно снимать временные показания в начале и в конце работы измеряемого фрагмента, а не постоянно. А также следить за тем, чтобы время работы функции, измеряющей время, было меньше измеряемого интервала.
4. Снижение влияния посторонних процессов. Часто процессор загружен другими процессами. В таких случаях рационально использовать таймер времени выполнения процесса.
В данной работе выбран метод многократного измерения. ВС имеет несколько различных таймеров, которые отражают течение времени с разных аспектов. Следует различать следующие таймеры:
1) Таймер системного времени - аппаратный счетчик, отражающий течение времени с позиции ВС. Совпадает с реальным временем. Системное время одинаково для всех работающих на компьютере программ. Значение временного интервала, который измерен таким таймером, включает в себя кроме времени выполнения процесса замера еще и другие процессы. Функции для получения системного времени:
· ОС Windows: time(); GetTickCount(); GetSystemTime(); clock() (системное время, которое прошло с запуска процесса).
· ОС Linux: clock_gettime(); time(); times(); gettimeofday().
2) Счетчик тактов процессора - аппаратный счетчик, величина которого возрастает на каждом такте процессора. Позволяет с наибольшей точностью замерять малые промежутки времени. Данный счетчик стоит использовать для измерения интервалов времени, которые меньше кванта времени, выделенного процессу ОС. Специальные команды процессора для получения значения счетчика тактов:
· Alpha: rpcc;
· PowerPC: mftbu, mftb;
· x86/x86-64: rdtsc;
· Itanium: ar.itc.
2. Библиотечная функция clock_gettime
Для получения значения системного таймера в ОС Linux/UNIX используется библиотечная функция clock_gettime. Данная функция с параметром CLOCK_MONOTONIC_RAW записывает значение системного таймера в структуру struct timespec, которая состоит из двух полей - tv_sec и tv_nsec, задающих значение секунд и наносекунд, прошедших с некоторого момента времени. В примере записывается значение таймера перед выполнением фрагмента кода и после него. Разница показаний в секундах выводится на экран. Кроме того, функция дает возможность получать значения и с других таймеров.
Листинг 1: clock_gettime
Точность: Обычно в ОС Windows составляет 55 мс (55 ? 10?3 с), в ОС GNU Linux/UNIX - 1 нс (1 ? 10?9 с).
Достоинство: является переносимой, т.е. функция доступна пользователю независимо от аппаратного обеспечения.
Недостатки: сравнительно низкая точность, и измеренный интервал включает время выполнения и других процессов, работавших в измеряемый период.
3. Машинная команда rdtsc
Машинная команда rdtsc (Read Time Stamp Counter) берет показания счетчика тактов в виде 64-разрядного беззнакового целого числа, которое равно количеству тактов, прошедших с момента запуска процессора. Делением количества тактов на тактовую частоту процессора получается время в секундах. В этом примере используется ассемблерная вставка команды процессора rdtsc, результат выполнения который записывается в объединение (union) ticks. таймер программный быстродействие
Разница данных счётчика тактов преобразовывается в секунды в зависимости от тактовой частоты.
Листинг 2: rdtsc
Точность: один такт.
Достоинство: максимально точность измерения времени.
Недостатки: привязка к архитектуре x86. Затруднительно преобразование в секунды в процессорах с динамическим изменением частоты.
4. Тестирование
Тестирование данных таймеров было произведено на алгоритме, представляющим из себя сложение двух чисел, повторяющееся 1000000 раз. Для уменьшения влияния посторонних факторов на результаты, измерения будет проведены 100 раз.
Эксперименты проводились на персональной ЭВМ с процессором Intel Core i3-2625M CPU с тактовой частотой 1.3 ГГц. Полученные результаты изображены на графике.
Библиографический список
1. Supercomputer Software Department, Institute of Computational Mathematics and Mathematics Geophysics “Определение времени работы прикладных программ” http://ssd.sscc.ru/sites/default/les/content/attach/310/computerlab1.pdf
Размещено на Allbest.ru
Подобные документы
Рассмотрение общих правил отмеривания временных интервалов в различных режимах работы таймеров. Программное обеспечение ввода-вывода данных через параллельные порты таймера. Изучение особенностей использования системы прерываний микроконтроллера.
лабораторная работа [73,8 K], добавлен 18.06.2015Техническое задание на разработку программного продукта и требования к программе. Написание алгоритма работы и разработка интерфейса программы. Руководство системного программиста и оператора. Основные методы и принципы тестирования базы данных.
дипломная работа [2,7 M], добавлен 27.01.2013История развития и виды тестирования программного обеспечения. Инсталляционное, регрессионное, конфигурационное, интеграционное, локализационное, модульное тестирование. Методы сокращения трудоемкости модульного тестирования разрабатываемого приложения.
курсовая работа [309,5 K], добавлен 16.12.2015Неразрешимость проблемы тестирования программного обеспечения. Виды и уровни тестирования. Стратегии восходящего и нисходящего тестирования. Методы "белого" и "черного" ящика. Автоматизированное и ручное тестирование. Разработка через тестирование.
курсовая работа [112,2 K], добавлен 22.03.2015Последовательность конфигурирования клиентского программного обеспечения для работы в сети. Парметры настройки и подключения сетевого принтера. Обновление конфигурации программы 1С: Предприятие. Анализ аппаратного обеспечения сети данной организации.
отчет по практике [1,6 M], добавлен 22.01.2011Метод вероятностно-алгебраического моделирования. Примеры определения вероятностных характеристик функционально-сложной системы в символьном виде. Получение и добавление данных с сервера "Всемирной организации здравоохранения". Структура базы данных.
курсовая работа [353,4 K], добавлен 22.06.2014Создание программы для вычисления значения функции на основе определённой формулы. Уточнение структуры входных и выходных данных и определение ассемблерного формата их представления. Разработка алгоритмов для реализации работы программного обеспечения.
курсовая работа [240,6 K], добавлен 17.06.2013Чем отличается программист от системного администратора. Преимущества и выгоды от работы системного администратора. Подготовка и сохранение резервных копий данных, их периодическая проверка и уничтожение. Конфигурирование нового программного обеспечения.
реферат [23,4 K], добавлен 11.03.2014Проектирование базы данных, информационной подсистемы PLC-Tester, модуля тестирования и web-приложения. Разработка логической структуры программного продукта и общие требования к техническому обеспечению. Запуск программы и описание тестовых прогонов.
дипломная работа [3,2 M], добавлен 30.06.2011Расчет трудоемкости алгоритма. Определение быстродействия процессора. Характеристика контроллеров серии Direct Logic DL. Устройства, которые вошли в структуру системы. Выбор программного обеспечения. Расчет работоспособности и надежности системы.
курсовая работа [2,0 M], добавлен 14.01.2013