22.5.1. Использование профайлера

22.5.1. Использование профайлера

Для использования профайлера нужно скомпилировать программу с опцией компилятора -pg и без опции . так как профайлер по умолчанию работает с файлом a.out. После этого запустите файл a.out, чтобы он создал файл gmon.out. Теперь запустите профайлер с параметром --nograph:

$ gcc -pg 1.с

$ ./а.out

$ gprof -b –no-graph

Без ключа -b профайлер выведет описание полей итоговой таблицы:

Time: время работы функции в процентном соотношении;

cumulative seconds: сумма числа секунд этой функции и вызывающих ее функций;

self seconds: число секунд, потраченное на работу этой функции в отдельности;

Calls: число вызовов;

self ms/calls: количество миллисекунд, на протяжении которых функция выполнялась;

total ms/calls: количество секунд, на протяжении которых выполнялась функция и все функции, которые вызываются данной функцией;

name: имя функции.

Рис. 22.5. Программа gprof

Чтобы было понятно, что означает каждое поле, рассмотрим листинг 22.3.

Листинг 22.3. Демонстрационная программа

#include <stdio.h>

int function2() {

 int i;

 /* генерируем задержку */

 for (i=0;i<9999999;i++) ;

 return 777;

}

double function(void) {

 int i;

 double x = 7.2323232323, y=324343.3434;

 /* генерируем задержку */

 for (i=0;i<9999999;i++) x/y;

 function2();

 return x/y;

}

int main() {

 int i;

 double l;

 for (i=0;i<10;i++) {

  printf("%d",i);

  l=function();

 }

 return 0;

}

Как видно из листинга, функция function() вызывается 10 раз (см. поле calls). В свою очередь, она вызывает функцию function2(), следовательно, число вызовов этой функции тоже равно 10. Функция function() выполняется 1.09 секунд (self seconds), а так как ее никто не вызывает (кроме main), то поле cumulative seconds также равно 1.09. Функция function2() работает 1.07 секунд, но ее вызывает функция function(), которая работает 1.09 секунд. Следовательно, поле cumulative seconds для второй функции равно 1,09+1.07=2.16. Поле self ms/call эквивалентно полю self seconds, только его величина представлена в миллисекундах. Поле total ms/call обратно полю cumulative call и содержит время выполнения этой функции и всех дочерних функций, в то время как поле cumulative call содержит время этой функции и всех родительских.

Данный текст является ознакомительным фрагментом.



Поделитесь на страничке

Похожие главы из других книг:

Использование

Из книги автора

Использование Во-первых, мы сперва должны подключить библиотеку cssexpr.js (о ней речь чуть ниже) и только потом вызывать нашу функцию constExpression.<script type="text/javascript" src="cssexpr.js"></script>После этого можно использовать constExpression в любом задаваемом блоке стилей (<style>), или любом


14.7.1. Использование ftw()

Из книги автора

14.7.1. Использование ftw() #include <ftw.h>int ftw(const char *dir, ftwFunctionPointer callback, int depth);Функция ftw() начинает с каталога dir и вызывает указанную в callback функцию для каждого файла в этом каталоге и его подкаталогах. Функция вызывается для всех типов файлов, включая символические ссылки и


Использование tar

Из книги автора

Использование tar Утилита tar — одна из самых популярных программ, используемых для резервного копирования в системах Linux и UNIX. Она объединяет несколько файлов в один файл архива, что упрощает передачу информации по сети и сохранение ее на резервном носителе. Название


Использование ip

Из книги автора

Использование ip Программа ip предназначена для управления таблицами маршрутизации, в частности, правилами, определенными в них. Выполнение данной программы зависит от значений некоторых подопций опции IP: Advanced Router. Программа ip вызывается следующим образом:ip команда [list |


Использование tc

Из книги автора

Использование tc Утилита tc использует средства ядра, которые активизируются посредством опций меню QoS and/or Fair Queueing. Данная программа управляет исходящим трафиком, в частности, не позволяет одному типу трафика монополизировать пропускную способность линии связи. В


Использование VPN

Из книги автора

Использование VPN VPN позволяет расширить локальную сеть за счет взаимодействия с внешними компьютерами. Очевидно, что если локальная сеть подключена к Internet, внешние пользователи могут обращаться к ней без VPN. Однако VPN имеет ряд преимуществ перед обычными типами сетевого


3.3.3. Использование RPM

Из книги автора

3.3.3. Использование RPM Программа RPM не имеет графического интерфейса, поэтому запускать ее нужно в консоли или в терминале (команда меню Приложения?Системные?Терминал). Формат вызова программы rpm следующий:rpm [-опции] [пакеты]Напомню, что установка программ - это привилегия


Использование

Из книги автора

Использование Метапрограммирование и метафункции Прежде чем перейти к изложению дальнейшего материала, полезно ввести понятия метапрограммирования и метафункции. Если внимательнее посмотреть на то, что происходит, когда компилятор встречает пример, подобный


Использование

Из книги автора

Использование По сути дела, Xalan Java и Xalan C++ — это библиотеки, позволяющие использовать XSLT-преобразования в собственных проектах. Xalan Java поддерживает набор интерфейсов TrAX (от англ. transformation API for XML — программный интерфейс преобразований для XML), определяющий стандартные


Использование

Из книги автора

Использование Легкий вариант, Instant Saxon представляет собой утилиту командной строки saxon.exe, с помощью которой можно применять преобразования к XML-документам:saxon.exe -о result.xml source.xml stylesheet.xslПолная версия Saxon (включающая также исходный код) тоже может использоваться как утилита


Использование

Из книги автора

Использование Главной областью применения Oracle XSLT Processor является его использование совместно с технологиями XSQL и XSU для обеспечения Web-доступа к реляционным данным. Кроме этого, Oracle XSLT Processor легко интегрируется в другие приложения и также может выполняться из командной


Использование

Из книги автора

Использование Как и любой другой XSLT-процессор, написанный на Java, xt можно без труда использовать в Java-проектах. Помимо этого, xt можно использовать в качестве сервлета и из командной строки.Сервлет-версия xt реализована в классе com.jclark.xsl.sax.XSLservlet и может выполняться на


Использование

Из книги автора

Использование Прежде всего, как C-библиотеку, libxslt можно подключать к собственным модулям посредством документированного API, а также при помощи разработанных врапперов использовать в Perl и Python-программах. Поскольку по степени совместимости и разработанности libxslt явно


29.4.3. Использование SSI

Из книги автора

29.4.3. Использование SSI Использование сценариев cgi, открывающих Web–страницы с целью отображения небольшого количества сведений, не всегда является оправданным. Например, была отображена дата, но также был создан сценарий cgi, который тоже отображает дату. Не лучше ли было бы