Система Turbo Profiler фирмы Borland
- Название:Система Turbo Profiler фирмы Borland
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Система Turbo Profiler фирмы Borland краткое содержание
Система Turbo Profiler фирмы Borland - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
(Рис. 1.8). Вряд ли нам удастся выжать еще что-нибудь из этой программы без основательной переработки алгоритма.
Рис. 1.8 Временная и количественная статистика программы PRIME6.
А что же дальше?
В этой главе мы научили Вас основам профилирования. К настоящему моменту Вы уже должны научиться обращаться с системой Turbo Profiler до такой степени, чтобы уметь загружать и профилировать программы, печатать содержимое различных окон, сохранять и восстанавливать статистику профилирования и менять расположение и размеры окон для облегчения анализа статистики.
На этом закончим наше обучение и покинем среду системы Turbo Profiler (выберите File| Quit (Файлы| Выход) или просто нажмите Alt-X).
Для того, чтобы получить более обширную информацию о среде системы Turbo Profiler, в том числе и о тех частях профилировщика, которые не были рассмотрены в данной главе, Вам необходимо обратиться к главе 4, являющейся полным справочным руководством по среде системы Turbo Profiler.
Если у Вас возникло желание дополнительно рассмотреть еще какие-то задачи, то мы бы порекомендовали Вам сделать следующее:
* Получите профили для программ, ищущих простые числа меньшие чем:
* 2 500,
* 5 000,
* 7 500,
* 10 000.
* Установите режим профилирования в состояние пассивного анализа (выбрав для этого команду Statistics| Profiling Options (Статистика| Параметры профилирования), что повлечет за собой появление блока диалога Profiling Options (Параметры профилирования)). Какие изменения на экране профилировщика последовали за этим? Какую информацию мы теряем при пассивном анализе? (Информацию о пассивном профилировании можно почерпнуть в главе 3.)
* Посмотрите как улучшатся характеристики программы при применении решета Эратосфена для нахождения простых чисел, не превышающих 10 000.
* Сравните случай применения функции позиционирования курсора с обычным переходом на новую строку.
Существует некоторое количество статей и книг, в которых рассматривается вопрос о получении профиля программы. Книга Джона Бентли «Создание эффективных программ» (Jon Bentley, Writing Efficient Programs), содержащая сводку правил создания эффективно работающего программного кода, предлагает всестороннюю обстоятельную методологию профилирования и включает в себя обширную библиографию.
Глава 2. Внутри профилировщика
Для того, чтобы извлечь из системы Turbo Profiler наибольшую пользу, необходимо понимать внутренние механизмы ее работы. Знание того, каким образом действует профилировщик, встретив маркер «области», или того, что происходит каждый раз, когда профилировщик прерывает выполнение программы позволит Вам отточить вашу технику профилирования, а также более адекватно задавать тип статистической информации, которую необходимо собрать для той или иной «области», и интерпретировать полученные данные.
Рассмотрим исходный текст PTOLL и PTOLLPAS:
* Copyright (c) 1990, Borland International */
#include
#include /* contains prototype for delay() */
main()
{
printf(«Entering main\n»);
route66();
printf(«Back in main\n»);
delay(1000);
highway80();
printf(«Back in main\n»);
delay(1000);
printf(«Leaving main\n\n»);
}
route66()
{
printf(«Entering Route 66\n»);
delay(2000);
printf(«Leaving Route 66\n»);
}
highway80()
{
printf(«Entering Highway 80\n»);
delay(2000);
printf(«Leaving Highway 80\n»);
}
{ Copyright (c) 1990, Borland International }
Uses Crt;
Procedure Route66;
Begin
Writeln('Entering Route 66');
Delay(2000);
Writeln('Leaving Route 66');
End;
Procedure Highway80;
Begin
Writeln('Entering Highway 80');
Delay(2000);
Writeln('Leaving Highway 80');
End;
Begin
Writeln('Entering main');
route66;
Writeln('back in main');
Delay(1000);
highway80;
Writeln('back in main');
delay(100);
Writeln('Leaving main');
End.
Задание в качестве «областей» всех подпрограмм в рассматриваемом модуле ведет к образованию четырех переменных для подсчета времени и четырех переменных для подсчета количества вызовов.
Рис. 2.1 Переменные для подсчета времени выполнения и числа вызовов подпрограмм для PTOLL/PTOLLPAS.
Воображаемые пункты сбора подорожной пошлины.
В данном разделе мы проследим за выполнением программы и рассмотрим, что происходит при встрече маркеров «области». Этот процесс можно представлять себе как проход через ряд пунктов, в которых собирается подорожная пошлина. Как только Вы проходите через такой пункт, Вы сразу же попадаете на участок дороги, относящийся к данному пункту и продвигаетесь по этому участку до тех пор, пока не попадете на следующий пункт сбора пошлины.
Перед тем, как Вы попадаете на первый такой пункт и после того, как преодолеваете последний, Вы находитесь на свободной территории. Каждый пункт имеет информацию о том, какое количество времени Вы затратили на прохождение участка дороги, относящегося к данному пункту, а также о том, сколько раз Вы прошли через этот пункт. Но рассматриваемая дорога имеет одно таинственное свойство, которое заключается в том, что двигаться по нему Вы можете только в одном направлении. При этом операторы цикла и перехода подобны воздушным мостам по которым Вас перебрасывают на какие-то другие участки дороги. Во время вашего продвижения по дороге в процессе выполнения программы PTOLL, мы будем считать каждую помеченную нами «область» отрезком этой дороги со стоящими на его концах воображаемыми пунктами для сбора пошлины.
Рассмотрим, каким образом происходит сбор временной и количественной информации для типичной программы, написанной на Паскале или С.
Перед тем, как Вы попадете в функцию main, выполняется стартовый код С. Это еще пока ничейная территория. Каждый импульс таймера, происходящий во время прохождения данного участка, не учитывается, за исключением того случая, когда Вы явно помечаете стартовый код как «область».
Как только Вы преодолели маркер «области» (пункт сбора пошлины), которым помечена функция main переменная, отвечающая за подсчет числа вызовов main, автоматически увеличивается на единицу и каждый импульс таймера, происходящий с момента входа в main до вызова route66, увеличивает значение переменной, в которой учитывается время выполнения функции main.
На следующем этапе выполнения main вызывает функцию route66 и Вы попадаете на новый участок дороги. В момент перехода через маркер (пункт сбора пошлины), которым отмечена функция route66, происходит несколько вещей:
* Текущей «областью» начинает считаться route66;
* Отправляются в стек переменные, в которых накапливаются данные для вызывающей функции (в данном случае — функции main);
* Переменная, в которой подсчитывается количество вызовов route66, увеличивается на единицу.
Каждый импульс таймера, происходящий начиная с данного момента до возврата из route66, автоматически увеличивает значение переменной, в которой накапливается время выполнения функции route66. При этом переменная, в которой происходит учет общего времени выполнения программы, также продолжает увеличиваться с каждым импульсом таймера.
Читать дальшеИнтервал:
Закладка: