Система Turbo Profiler фирмы Borland
- Название:Система Turbo Profiler фирмы Borland
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Система Turbo Profiler фирмы Borland краткое содержание
Система Turbo Profiler фирмы Borland - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
* All Callers (Все вызывающие подпрограммы) означает сохранение полного стека вызовов подпрограмм каждый раз, когда в процессе выполнения, встречается точка входа в помеченную подпрограмму.
* Immediate Caller (Непосредственно вызывающая подпрограмма) означает запоминание только самого верхнего элемента стека вызовов подпрограмм при попадании на точку входа в данную помеченную подпрограмму.
* None (Никакие) означает, что при встрече, в процессе выполнения, маркера «области» типа «точка входа в подпрограмму» никакая информация из стека вызовов подпрограмм не запоминается.
По умолчанию, при первом получении профиля программы параметр Callers (Вызывающие подпрограммы) для всех маркеров «области» типа «точка входа в подпрограмму» имеет значение None (Никакие).
Установка параметра Statistics| Callers (Статистика| Вызывающие подпрограммы), находящегося в главном меню, в состояние Enable (Включено) равнозначна установке значения All Callers (Все вызывающие подпрограммы) параметра Сallers (Вызывающие подпрограмм) для каждого маркера «области», установленного в окне Areas («Области»). Тем не менее, если Вы вручную установили значения параметров Callers (Вызывающие подпрограмм) для каких-либо «областей» в окне Areas («Области»), то, в этом случае, установка параметра Statistics| Callers (Статистика| Вызывающие подпрограммы) в состояние Enable (Включено), не изменит значение параметра Callers (Вызывающие подпрограммы) для таких «областей».
Установка параметра Statistics| Callers (Статистика| Вызывающие подпрограммы) в некоторой точке программы в состояние Disable (Отключено) указывает профилировщику, чтобы он не сохранял никакой информации из стека вызовов, но это совершенно не влияет на действие параметров Caller (Вызывающая подпрограмма), установленных в окне Areas («Области») (как и при установке данного параметра в состояние Enable (Включено)).
Опрос вместо подсчета.
На самом деле, профилировщик не измеряет время непосредственно, а очень точно вычисляет его на основании информации о количестве прерываний таймера.
Этот способ подсчета времени можно рассматривать как один из видов статистического моделирования (некий статистический опрос).
Периодически запрашивая, какая из «областей» является текущей, и, имея для каждой из «областей» счетчик, (который увеличивается при каждом прерывании таймера, если в этот момент «область» является текущей), профилировщик может вычислить время, затраченное на выполнение данной «области».
Примечание: Все вышесказанное имеет место только в случае работы в пассивном режиме профилирования.
Профилировщику известно общее время выполнения программы.
Также ему известно общее число прерываний таймера, произошедших во время выполнения программы. Время, затраченное на выполнение данной «области» может быть вычислено по формуле:
<���время выполнения «области»> = <���общее время выполнения программы> * <���значение счетчика «области»> / <���значение счетчика программы>
Но, на самом деле, нельзя утверждать, что значение времени, вычисленное по приведенной формуле, в точности совпадает с количеством времени, затраченным на выполнение данной «области». Если Ваша программа содержит в себе цикл, в котором, с частотой, кратной частоте прерывания таймера происходит обращение к некоторой подпрограмме (например к подпрограмме генерации звука одной тональности), то большинство моментов времени, в которые будут генерироваться импульсы таймера может прийтись на выполнения некоторой строки (или «области»). Описанное явление резонанса может возникнуть даже в случае, когда рассматриваемая строка не принадлежит к числу основных потребителей времени выполнения Вашей программы. Подобные ситуации редки, но вполне возможны.
Если Вы подозреваете, что возникла подобная ситуация с наложением частот, то измените значение параметра Statistics|
Profiling Options| Clock speed value (Статистика| Параметры профилирования| Скорость работы часов) и сравните профиль, полученный после внесения этого изменения, с предыдущим профилем.
Использование памяти профилировщиком.
На следующем рисунке показано распределение памяти при получении профиля программы с помощью системы Turbo Profiler.
Рис. 2.2 Карта памяти системы Turbo Profiler.
Для запоминания информации об «областях» профилировщик использует динамически-распределяемую область памяти (far heap).
Если Вы, в процессе выполнения программы, добавите новые «области», то эта, динамически-распределяемая область памяти, может распространиться на ту часть памяти, которая зарезервирована для программы пользователя, для того, чтобы разместить в ней новые переменные «областей» и буферы. Поэтому, если Вы вносите изменения в разметку «областей» во время выполнения программы, Вам необходимо повторно запустить программу с помощью Run| Program Reset (Выполнение| Повторное выполнение программы). Если Вы этого не сделаете, то результаты профилирования будут совершенно непредсказуемы, Ваш компьютер может просто «зависнуть».
Глава 3. Стратегии профилирования
Если Вы думаете, что процесс совершенствования Вашей программы при помощи профилирования состоит всего лишь из трех последовательных этапов на первом из которых вы получаете профиль программы, на втором — модифицируете исходный текст Вашей программы, а на третьем — уже празднуете победу, то Вы глубоко заблуждаетесь. Профилирование Ваших программ в системе Turbo Profiler с целью повышения их быстродействия — это динамичный интерактивный процесс. Вы собираете статистику, анализируете данные о процессе выполнения, находящиеся в разнообразных окнах, возможно, изменяете какие-то параметры профилирования для получения новых данных, профилируете еще раз, снова проводите анализ статистики, модифицируете исходный текст и компилируете его, опять получаете профиль программы, затем анализируете статистику и так далее.
Если Вы поначалу не уверены в своих предположениях о том, какие из участков Вашей программы являются ее «узкими местами», то, при помощи системы Turbo Profiler, получите ее профиль с теми значениями параметров профилирования, которые установлены по умолчанию. После этого, посмотрев на результаты профилирования, появившиеся в окне Execution Profile (Профиль выполнения), Вы получите представление о том, какие из подпрограмм Вашей программы потребляют большую часть времени ее выполнения. Сопоставив временные и количественные данные, Вы поймете какие участки Вашей программы наиболее дорогостоящи в смысле времени, затрачиваемого на одно выполнение. Вооруженные этими знаниями, Вы можете смело начинать атаку неэффективных участков Вашей программы.
Система Turbo Profiler имеет несколько различных окон отчета, предназначенных для изображения и анализа полученных статистических данных. Также Вы можете распечатать содержимое такого окна на бумаге, либо записать его на диск для учета этапов повышения быстродействия Вашей программы. В окнах отчета Вы можете увидеть количественную и временную информацию о процессе выполнения Вашей программы, данные о ее работе с файлами, информацию об использовании прерываний DOS, работе механизма оверлеев, а также о вызовах подпрограмм.
Читать дальшеИнтервал:
Закладка: