ProfileCount: различия между версиями

Материал из wikiru.visual-prolog.com

(Новая: Для замера времени выполнения предикатов можно использовать класс '''profile\profileCount'''. Перед его использо...)
 
Строка 1: Строка 1:
Для замера времени выполнения предикатов можно использовать класс '''profile\profileCount'''. Перед его использованием необходимо добавить опцию компилятора '''/PROFILE''' и перестроить проект. Также необходимо вставить вызовы запускающие профилирование ''''start'''', обычно при инициализации приложения, останова ''''stop'''' и вывода результатов ''''print''''(обычно в конце приложения).
Для замера времени выполнения предикатов можно использовать класс '''profileCount''' из пакета '''profile'''. Перед его использованием необходимо добавить опцию компилятора '''/PROFILE''' и перестроить проект. Также необходимо вставить вызовы запускающие профилирование '''start''', обычно при инициализации приложения, останова '''stop''' и вывода результатов '''print''' (обычно в конце приложения).  


Вот типичный пример использования в консольном приложении:
<vip>
clauses
    run():-
        console::init(),
        profileCount::start(),       
        try
            главныйПредикат()
        finally       
            profileCount::stop(),
            Out = console::getConsoleOutputStream(),
            profileCount::print(Out)
        end try.
</vip>
Для всех предикатов выводится количество их вызовов, а для некоторых и суммарное время выполнения. Следует учесть, что данный инструмент (как впрочем и все) влияет на выполняемую программу (даже если предикат '''start''' не был выполнен). Программа становится больше и выполняется медленней. Это надо учитывать при анализе полученных результатов. И, самое главное, не забыть убрать опцию '''/PROFILE''' после, того, как все замеры будут произведены. Отсутствии данной опции все предикаты проекта ничего не делают.


[[Категория:VipPfc]]
[[Категория:VipPfc]]

Версия 15:27, 31 октября 2007

Для замера времени выполнения предикатов можно использовать класс profileCount из пакета profile. Перед его использованием необходимо добавить опцию компилятора /PROFILE и перестроить проект. Также необходимо вставить вызовы запускающие профилирование start, обычно при инициализации приложения, останова stop и вывода результатов print (обычно в конце приложения).

Вот типичный пример использования в консольном приложении:

clauses
    run():-
        console::init(),
        profileCount::start(),        
        try
            главныйПредикат()
        finally        
            profileCount::stop(),
            Out = console::getConsoleOutputStream(),
            profileCount::print(Out)
        end try.

Для всех предикатов выводится количество их вызовов, а для некоторых и суммарное время выполнения. Следует учесть, что данный инструмент (как впрочем и все) влияет на выполняемую программу (даже если предикат start не был выполнен). Программа становится больше и выполняется медленней. Это надо учитывать при анализе полученных результатов. И, самое главное, не забыть убрать опцию /PROFILE после, того, как все замеры будут произведены. Отсутствии данной опции все предикаты проекта ничего не делают.