Организация параллельных потоков. Часть 1 | страница 6
Чтобы пересчитать количество тактов в секунды, нужно разделить количество тактов на значение следующей константы:
CLOCKS_PER_SEC.
Чтобы использовать функцию clock, в начале программы нужно подключить библиотеку, указав заголовочный файл:
time. h.
Пример программы приводится на рис. 4.2.
Исходные данные для расчёта времени — целые числа. После деления может получиться дробное число. Чтобы найти результат в виде дробного числа, придётся в формуле переопределить тип переменных.
Зададим формат вывода на экран для дробного числа так, чтобы получить десять знаков после запятой:
%5.10f.
Рис. 4.2. Измеряем время выполнения
Задание. Составьте программу суммирования с определением времени работы.
Задание. Измените программу так, чтобы вводить количество единиц в командной строке при запуске программы.
Задание. Запустите составленную программу с разным значением параметра Ns и укажите в отчёте время выполнения.
Задание. Подберите количество прямоугольников так, чтобы время выполнения программы составляло от 10 до 20 секунд.
4.3. Пакетная обработка
В предыдущем разделе мы запускали программу вручную. И результаты работы тоже записывали вручную. При большом количестве прогонов программы ручная работа становится неэффективной.
Чтобы выполнять рутинные действия в автоматическом режиме, мы будем использовать пакетный файл. Это текстовый файл с расширением *.BAT. В таком файле записаны команды операционной системы.
В простейшем варианте это будет несколько одинаковых строк с одной и той же командой запуска нашей программы. При выполнении пакетного файла операционная система запустит нашу программу.
Задание. Составьте пакетный файл для нескольких запусков программы.
4.4. Загрузка в Excel
Следующая проблема — это запись результатов в отчёт. Мы сформируем файл в формате CSV, то есть значения с разделителем:
Comma Separated Values.
В английском варианте разделитель полей — запятая, а разделитель целой и дробной частей — точка. Команда вывода на экран в языке Си тоже использует точку как десятичный разделитель. Нам остаётся организовать вывод полученных чисел в одну строчку через запятую — при каждом прогоне программы. Далее мы переходим на следующую строку.
Вот пример вывода результатов в одну строку:
printf (»%d,», S)
printf (»%d\n», Ns)
Чтобы формат вывода легче читался на экране, мы выводим каждое число по отдельности.
После нескольких прогонов мы получим несколько строк. Если вставлять результаты в отчёт вручную, придётся копировать через буфер обмена. Это опять долго и сложно.