Методические указания к лабораторным работам 3, 4 по курсу «Метрология, стандартизация и сертификация», страница 4

Например, функция fabs() занимает 23,46% времени функции OnBt1() и вызывается из нее 5 раз (см. рис 4).

·  Обратите внимание, что дочерняя функция pow() (см. рис. 4) вызывается шесть раз и занимает почти половину времени от времени работы функции OnBt1() (у вас могут быть несколько другие данные).

·  Закройте окно Function Details и раскройте вкладку  Session  Summary (см.  рис. 5).

Указанная вкладка содержит следующую информацию:

Creation Date – время и дата создания файла сессии;

Started – время начала сессии;

Ended – время конца сессии;

Executable – имя и путь выполняемой программы;

Command Args – параметры выполняемой программы;

Exit Code – выходной код, создаваемый, когда вы выходите из приложения (0 – корректное завершение программы, другие цифры означают код ошибки в работе программы);

Processor – тип процессора на машине;

# of Processors – число процессоров на машине;

OS Version – версия операционной системы на машине;

# of Called Functions – число функций, вызываемых в течение сессии;

# of Calls – число вызовов функций, сделанных в течение сессии;

Total Timing – общее количество времени, которое центральный процессор потратил на работу над вашим приложением.

Далее идет список всех используемых модулей. Для каждого модуля указывается:

o  имя;

Number of called Functions – количество вызываемых из него функций;

PercentofTimeSpentinImage – процент времени, потраченного в данном модуле.

Рис. 5

Давайте более подробно рассмотрим выполнение функции OnBt1().

·  Раскройте вкладку Function List, вызовите контекстное меню функции OnBt1() и выберите GoToSource.

На экране появится таблица с исходным текстом программы и данными сессии. В данном окне для каждой строки отображается следующая информация:

Count – количество вызовов строки, т.е. сколько раз управление попадало на эту строку;

% ofFunction – время, потраченное на выполнение строки и всех дочерних функций, вызванных из этой строки, как процент от времени, потраченного на выполнение функции;

% withChildren – время, потраченное на выполнение строки и всех дочерних функций, вызванных из этой строки  как процент от времени сессии;

Time – среднее время выполнения строки;

Functions – число функций в строке;

Line # – номер строки в исходном тексте программы.

Возможно, у вас отобразится не вся информация. Управление выводом данной информацией также закреплено за кнопкой Columns.

·  Отобразите на экране столбцы Count и Time, а остальные скройте (см. рис. 6).

 


Рис. 6

·  Обратите внимание, что строки, занявшие наибольшее время выполнения, выделяются другим цветом.

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

Первое изменение.

Заменим функцию возведения в степень pow() простым умножением.

·  Закройте TrueTime. На запрос сохранения данных сессии ответьте «да».

Сохранять эти данные нужно для сравнения с последующими данными.

·  В VisualC++ в коде функции CTTDlg::OnBt1() замените функцию pow(«число», 2) на «число» * «число». Нажмите кнопку Build with True Time, затем кнопку Run with True Time. Нажмите кнопку RunMethod и затем Exit.

Эти операции мы уже выполняли до изменения.

·  Теперь снова вызовите окно FunctionDetails для функции OnBt1() (см. рис. 7).

 


Рис. 7

Теперь больше половины времени занимает функция fabs. Если посмотреть вкладку Sourсe (см. рис. 8), то можно увидеть, что время выполнения строки  xx = x - (x*x-13)/(2 * x); уменьшилось более чем в 10 раз. Время работы функции OnBt1() и общее время работы приложения также уменьшилось (см. рис. 9).