Да, эти значения "секунд" равны не для вызова. Процентное время для всего запуска программы. По сути, ваша программа потратила 31% своего времени на эту функцию (из-за количества вызовов + времени, затраченного на один вызов).
Возможно, вы захотите прочитать о том, как анализировать плоские профили gprof.
Исправление: Извините, эти первые две секунды значения являются кумулятивными, как указано в ОП.
Я думаю, что странно, что вы видите 0 для "self" и "total s / call".
Цитирование раздела о gprof precision : «Фактическая величина ошибки обычно превышает один период выборки. Фактически, если значение равно n раз периода выборки, ожидаемая ошибка в нем квадратный корень из n периодов выборки.Если период выборки составляет 0,01 секунды, а время выполнения foo равно 1 секунде, ожидаемая ошибка во время выполнения foo составляет 0,1 секунды. к следующему. (Иногда это будет отличаться больше.) "
Также, возможно, это связано с тем, что стоит отметить, что gprof не профилирует многопоточные программы. В таких случаях лучше использовать что-то вроде Sysprof или OProfile .