Система Turbo Profiler фирмы Borland | страница 49



Проинтерпретировать результаты пассивного анализа довольно — таки тяжело, за исключением случаев когда время выполнения Вашей программы велико или когда Вы накапливаете статистику в результате большого числа запусков Вашей программы. Некоторые «области» Вашей программы могут вообще не найти никакого отражения в статистических данных несмотря на то, что в действительности они работают в процессе выполнения программы. Это происходит потому, что прерывания работы программы, производимые профилировщиком, просто не совпадают со временем выполнения этих «областей».

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

При профилировании в пассивном режиме Вы получаете более адекватные статистические данные несколько раз (для этого необходимо присвоить параметру Run Count (Счетчик числа выполнений), находящемуся в блоке диалога Profiling Options (Параметры профилирования), значение, превышающее 1).

Примечание: За то, что пассивный анализ не сильно увеличивает время работы программы, Вам приходиться платить некоторой неполнотой полученного профиля.

Некоторые вещи, на которые стоит обратить внимание.

Некоторые данные, полученные в результате пассивного анализа, могут ввести Вас в заблуждение, если при их рассмотрении Вы не будете учитывать следующих соображений:

* Если в процессе работы Вашей программы выполняются операции чтения с диска и записи на него, то время затрачиваемое на эти операции прибавляется ко времени выполнения соответствующей подпрограммы только в случае активного анализа, при пассивном анализе этого не происходит.

* Когда Ваша программа обращается к какому-либо прерыванию, не помеченному как «область», то профилировщик прибавляет время, затрачиваемое на обработку прерывания ко времени выполнения подпрограммы, из тела которой произошло обращение к данному прерыванию, если анализ происходит в активном режиме, если же задан пассивный режим работы, то это время просто игнорируется.

Профилирование объектно-ориентированных программ.

В общем случае, профилирование объектно-ориентированных программ не очень сильно отличается от профилирования обыкновенных программ. Вы можете обращаться с этими программами точно так же, как со всеми остальными, рассматривая при этом методы в качестве вызовов подпрограмм.