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




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


* Получите профили для программ, ищущих простые числа меньшие чем:


* 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);