2012-04-10 6 views
4

У меня есть функция, которая занимает 11 секунд. Я хочу рассказать, сколько времени тратится на ввод-вывод. Есть ли какой-либо инструмент для профилирования времени ввода-вывода внутри функции? который может дать статику какПрофилирование времени, проведенного в I/O C++

Total Time I/O TIME Function Name 
x   y  f 
+2

Как насчет gprof? – cnicutar

+0

Используйте функцию поиска ... – tauran

+1

У вас есть четкое определение того, что время, затраченное на ввод-вывод, действительно означает? Linux имеет довольно хорошее кэширование файловой системы, и это влияет на время, затрачиваемое на ввод-вывод. Просто попробуйте запустить несколько раз одну и ту же программу с теми же входами ... –

ответ

3

This method will tell you.

Просто паузу, как в 10 раз. Каждый раз смотрите на стек.

Если вы поймаете его в процессе выполнения ввода-вывода, скажем, 6 из этих пауз, это означает, что около 60% его времени находится в IO.

Если вы хотите узнать, сколько из них было потрачено на IO, запрошенное функцией F, просто подсчитайте количество образцов, которые выполняли IO, когда функция F находилась в стеке.

(дргоГо не будет говорить вам это, потому что он приостанавливает выборку во время ввода-вывода.)

Добавлено: В качестве альтернативы, вы можете просто гасите НЛ вызовы в функции F и измерить общее время и без ввода-вывода ,

Смежные вопросы