Если ваше приложение просто запускает «плоский выход» (то есть оно либо использует процессор, либо ожидает ввода-вывода), пока оно не выйдет, и нет других конкурирующих процессов, просто выполните time myapp
(или, возможно, /usr/bin/time myapp
, другой выход для встроенной оболочки).
Это поможет вам что-то вроде:
real 0m1.412s
user 0m1.288s
sys 0m0.056s
В этом случае, пользователь + SYS (ядро) время счета для почти всех реального времени и есть только 0.068s неучтенных ... (вероятно, время, затраченное сначала загружать приложение и его поддерживающие библиотеки).
Однако, если вы должны были видеть:
real 0m5.732s
user 0m1.144s
sys 0m0.078s
тогда ваше приложение потратил 4.51s не потребляя процессор и, предположительно, блокируется на IO. Какую информацию я думаю, что вы ищете.
Однако, когда этот простой метод анализа расщепляет является:
- приложения, которые ждут на таймер/часы или других внешних стимулов (например управляемых событиями GUI приложений). Не может различать время ожидания на часах и время ожидания на диске/сети.
- Многопоточные приложения, которые требуют немного больше размышлений об интерпретации чисел.
время + gprof + valgrind & friends + oprofile – Tom
Скажите «время» скажите мне, что мое приложение занимает 20 секунд. Как разбивка valgrind, сколько времени я трачу на обработку ЦП VS сколько времени за эти 20 секунд я простаиваю? Я понимаю, что valgrind ломает стоимость каждой функции, когда процессор обрабатывает. Я хочу узнать соотношение между временем обработки процессорного времени VS (ожидание сетевого трафика, вызовы ввода-вывода и т. Д.). – richard