ProfileCount: различия между версиями
(Новая: Для замера времени выполнения предикатов можно использовать класс '''profile\profileCount'''. Перед его использо...) |
|||
Строка 1: | Строка 1: | ||
Для замера времени выполнения предикатов можно использовать класс '''profile | Для замера времени выполнения предикатов можно использовать класс '''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 после, того, как все замеры будут произведены. Отсутствии данной опции все предикаты проекта ничего не делают.