Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК МПСС.doc
Скачиваний:
38
Добавлен:
09.11.2019
Размер:
11 Mб
Скачать

Лабораторная работа 2.

оценка времени выполнения арифметических операций

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

Краткие теоретические сведения

В данной лабораторной работе требуется оценить скорость выполнения процессором операций с операндами различных типов, например, с целыми числами и с числами с плавающей точкой. Так как оценить время выполнения одной операции для современного процессора проблематично, необходимо подсчитать время выполнения нескольких операций (для современной вычислительной машины порядка одного миллиона операций).

Замерять время выполнения операций можно с помощью функции ftime(). Выглядит это следующим образом. С помощью функции ftime() получаем некоторое начальное время выполнения. Затем в цикле выполняем необходимое количество операций и снова получаем значение времени. Далее находим разницу времен после и до цикла. Полученное значение времени и есть время, затраченное процессором на выполнение цикла операций. Оценивать время выполнения цикла операций необходимо в миллисекундах. Вместо функции ftime() можно использовать функцию GetTickCount().

Программа должна поочередно запускать на выполнение 8 циклов, каждый из которых будет выполнять различные арифметические операции (сложение, вычитание, умножение и деление). Первые четыре цикла будут выполнять операции для операндов первого типа, а вторые четыре для операндов второго типа.

В начале и в конце каждого цикла программа будет запоминать время (в миллисекундах) запуска и остановки этого цикла. Разница между этими величинами будет являться временем выполнения цикла конкретной арифметической операции.

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

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

Рисунок 1. – Возможный вид программы

Задание

Написать программу для оценки времени выполнения арифметических операций (сложение, вычитание, умножение, деление) для целочисленных операндов и для операндов с плавающей точкой на языке программирования С/С++. Допустимая среда разработки – Borland C++ Builder5.0, Borland C++ Builder6.0, Microsoft Visual C++6.0, Microsoft Visual C++7.0 и т.д.

Порядок выполнения работы

Написать программу, реализующую поставленную задачу.

Откомпилировать программу.

Запустить программу. Убедиться в ее корректной работе.

Уметь объяснить работу программы.

Оформить отчет.

Содержание отчета

Ф.И.О., группа, номер, название лабораторной работы и название дисциплины.

Цель работы.

Краткое описание алгоритма работы программы.

Результат работы программы.

Листинг программы.

Выводы.