Заставить gprof представлять на основе тактового стеной времени?

Мое понимание - то, что по умолчанию gprof принимает во внимание процессорное время. Существует ли способ заставить это представлять на основе тактового стеной времени?

Моя программа делает много диска i/o, таким образом, процессорное время, которое это использует только, представляет часть фактического времени выполнения. Я должен знать, какие части диска i/o поднимают большую часть времени.

8
задан jetwolf 10 May 2010 в 15:29
поделиться

2 ответа

gprof этого не сделает. Посмотрите на это.

И это.

В двух словах: Под gdb, запустите его и сделайте Ctrl-Break или Ctrl-C 10 раз наугад, и отобразите стек вызовов. Если ввод/вывод занимает (например) 60% времени, то (примерно) в 6 из 10 пауз вы увидите это в процедуре writebuf или readbuf, а строки кода, запрашивающие этот ввод/вывод, будут четко отображены на стеке.

Вы также можете использовать lsstack для получения той же информации.

1
ответ дан 5 December 2019 в 23:14
поделиться

Вы можете использовать strace или cachegrind, чтобы правильно профилировать код. strace даст вам подробную информацию о времени, потраченном на системные вызовы, а cachegrind даст подробный анализ использования ресурсов.

1
ответ дан 5 December 2019 в 23:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: