Профилирование gprof

228
18 мая 2022, 17:40

Помогите разобраться. Куча мануалов по gprof - но они не понятные. Вот на примере

Профилирование приложений в Qt Creator с помощью gprof

начинаются непонятки с этого

   Flat profile: 
   Each sample counts as 0.01 seconds. 
   %    cumulative   self           self    total  
  time   seconds   seconds  calls  ms/call  ms/call    name   
 75.08    7.35       7.35   1500    4.90     4.90    functionB()
 24.92    9.79       2.44   1500    1.63     1.63    functionA()

что такое self ms/call и total ms/call? Есть описание

self ms/call' (`собственных миллисекунд на вызов')

Это поле представляет собой среднее количество миллисекунд, затраченных этой функцией на вызов, если эта функция профилируется. Иначе это поле остается пустым для этой функции.

total ms/call' (всего миллисекунд на вызов')

Это поле представляет собой среднее количество миллисекунд, затраченных этой функцией и ее подпрограммами на вызов, если эта функция профилируется. Иначе это поле остается пустым для этой функции.

что такое `собственных миллисекунд на вызов'? Например для functionB() - Это время затраченное на вход/выход в/из функции functionB() (т.е. на переключение контекста из main в functionB и обратно)?

Answer 1

что такое `собственных миллисекунд на вызов'? Например для functionB() - Это время затраченное на вход/выход в/из функции functionB() (т.е. на переключение контекста из main в functionB и обратно)?

Нет.
self и total — это название столбцов. т.е., соответственно, собственное время и общее время.
ms/call — это единицы измерения т.е. миллисикунды/вызов.

т.о. значение в столбце total — это среднее время выполнения в миллисекундах самой функции включая время выполнения всех других подпрограмм, которые она вызывает. А selfне включая время подпрограмм. Как не сложно видеть, значение в поле self ms/call равно общему количеству секунд, затраченному при всех вызовах, (self seconds), поделённому на общее количество вызовов (calls) и умноженное на 1000.

READ ALSO
Смена знака с + на - в цикле С++

Смена знака с + на - в цикле С++

Я новичок в программировании,нужно написать цикл в котором сумма будет считаться как 1-1/2+1/3-1/4+1/5-1/6 и тд,не совсем понимаю как менять знак с + на - в цикле

274
Ввод и вычисление произведения элементов массива

Ввод и вычисление произведения элементов массива

Найти произведение элементов одномерного массива, состоящего из N элементовРазмер массива и его элементы вводятся с клавиатуры

205
Как правильно отсортировать структуру по полю динамической строки с помощью qsort(СИ)?

Как правильно отсортировать структуру по полю динамической строки с помощью qsort(СИ)?

пишу интерпретатор командЕсть входной файл, в котором даны инструкции вида:

159
Конфликт размера операндов

Конфликт размера операндов

нужно значение из регистра edx перенести в массив символовНе знаю как исправить конфликт операндов

314