Я работаю с Eclipse, я написал код C ++ с библиотекой OpenCV, когда я его профилировал, он дает мне 0% времени,
Каждый образец считается за 0,01 секунды.
нет времени накапливается
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
0.00 0.00 0.00 2 0.00 0.00 cvScalar(double, double, double, double)
0.00 0.00 0.00 1 0.00 0.00 _GLOBAL__sub_I__ZN3Cam11getPositionEP9_IplImage
0.00 0.00 0.00 1 0.00 0.00 Oeffnecamera(CvScalar, CvScalar)
0.00 0.00 0.00 1 0.00 0.00 Berechnepositon(CvScalar, CvScalar)
0.00 0.00 0.00 1 0.00 0.00 handleVersionKratky(std::string)
0.00 0.00 0.00 1 0.00 0.00 __static_initialization_and_destruction_0(int, int)
0.00 0.00 0.00 1 0.00 0.00 Cam::getPosition(_IplImage*)
0.00 0.00 0.00 1 0.00 0.00 Cam::GetThresholdedImage(_IplImage*, CvScalar, CvScalar)
0.00 0.00 0.00 1 0.00 0.00 std::operator|(std::_Ios_Openmode, std::_Ios_Openmode)
проблема в том, что 0,01 секунды это много.
я профилировал с:
g++ -pg Name.cpp
than ./a.out
tahn gprof -b a.out > a.txt
than cut a.txt.
Как я могу изменить счетчик отсчетов, чтобы я получил 0,0001 секунду или как я могу изменить частоту
Спасибо за ответ с дополнительной информацией. В вашем случае я бы порекомендовал хороший профилировщик, который сэмплирует по времени настенных часов (а не только по времени процессора gprof
), который сэмплирует весь стек вызовов (а не только счетчик программ как gprof
), и это сообщает процентное время включительно по строке кода (не только по функции, как большинство профилировщиков). Один из них является Увеличить который не является бесплатным, но вы можете использовать пробную копию. Помните, что вам нужен процент настенных часов (не CPU) (не абсолютный), включительно (не self), на строку (не на функцию).
Многие люди думают, что они ищут «медленную функцию».
Нет. То, что вам нужно понять, в более общем смысле, Зачем программа тратит большую часть своего времени.
Вы можете получить эту информацию, только посмотрев на процентную долю времени настенных часов по строке кода.
Кроме того, я бы предположил, что вывод, который вы получите из стека-сэмплера, даст такое же хорошее или лучшее представление, чем график вызовов. Графики вызовов, как правило, содержат много не относящихся к делу деталей (блоки с низким процентом) и т. Д.
Других решений пока нет …