Например, функция fabs() занимает 23,46% времени функции OnBt1() и вызывается из нее 5 раз (см. рис 4).
· Обратите внимание, что дочерняя функция pow() (см. рис. 4) вызывается шесть раз и занимает почти половину времени от времени работы функции OnBt1() (у вас могут быть несколько другие данные).
· Закройте окно Function Details и раскройте вкладку Session Summary (см. рис. 5).
Указанная вкладка содержит следующую информацию:
o Creation Date – время и дата создания файла сессии;
o Started – время начала сессии;
o Ended – время конца сессии;
o Executable – имя и путь выполняемой программы;
o Command Args – параметры выполняемой программы;
o Exit Code – выходной код, создаваемый, когда вы выходите из приложения (0 – корректное завершение программы, другие цифры означают код ошибки в работе программы);
o Processor – тип процессора на машине;
o # of Processors – число процессоров на машине;
o OS Version – версия операционной системы на машине;
o # of Called Functions – число функций, вызываемых в течение сессии;
o # of Calls – число вызовов функций, сделанных в течение сессии;
o Total Timing – общее количество времени, которое центральный процессор потратил на работу над вашим приложением.
Далее идет список всех используемых модулей. Для каждого модуля указывается:
o имя;
o Number of called Functions – количество вызываемых из него функций;
o PercentofTimeSpentinImage – процент времени, потраченного в данном модуле.
Рис. 5
Давайте более подробно рассмотрим выполнение функции OnBt1().
· Раскройте вкладку Function List, вызовите контекстное меню функции OnBt1() и выберите GoToSource.
На экране появится таблица с исходным текстом программы и данными сессии. В данном окне для каждой строки отображается следующая информация:
o Count – количество вызовов строки, т.е. сколько раз управление попадало на эту строку;
o % ofFunction – время, потраченное на выполнение строки и всех дочерних функций, вызванных из этой строки, как процент от времени, потраченного на выполнение функции;
o % withChildren – время, потраченное на выполнение строки и всех дочерних функций, вызванных из этой строки как процент от времени сессии;
o Time – среднее время выполнения строки;
o Functions – число функций в строке;
o 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).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.