PROF(5) PROF(5) НАЗВАНИЕ prof - подготовка временного профиля одной функции СИНТАКСИС |#define MARK |#include | |void MARK (name) ОПИСАНИЕ Вызов макроса MARK введет метку с именем name, которая с точки зрения подготовки временного профиля трактуется аналогично точке входа функции. Выполнение команд мак- роса приведет к увеличению счетчика для данной метки, а затраченное время приплюсуется к предыдущей метке, вве- денной посредством макроса MARK, или, если таковой в пределах функции нет, то к точке входа функции. Имя name может быть произвольной комбинацией букв, цифр и символов подчеркивания. В пределах одного файла все профилируемые имена должны быть уникальными, однако они могут совпадать с другими программными объектами. Чтобы данная возможность тонкого профилирования работа- ла, имя MARK должно быть определено до того, как в текст будет включен файл . Имя MARK может быть определено с помощью директивы препроцессора, как это сделано выше, или с помощью аргумента командной строки, например: |cc -p -DMARK f1.c Если имя MARK не определено, то операторы с макросом MARK (name) могут быть оставлены в исходных файлах, так как они будут проигнорированы. Просмотреть подготовленный профиль можно с помощью оп ции -g программы prof(1). ПРИМЕР В данном примере макросы можно использовать для опреде- ления времени, затраченного на выполнение каждого цик- ла. Если этот пример не откомпилирован с определенным в командной строке именем MARK, то макросы игнорируются. |#include |f1 () |{ | int i,j; | ... | MARK(loop1); | for (i = 0; i < 2000; i++) { | ... | } | MARK(loop2); | for (j = 0; j < 2000; j++) { | ... | } |} СМ. ТАКЖЕ profil(2), monitor(3C). prof(1) в Справочнике пользователя. ОГРАНИЧЕНИЯ При вызове макроса MARK не должно быть пробелов между скобками и именем name, так как макрос определен в виде ассемблерных вставок и пробелы приведут к ошибке в мет- ке. @