我正在使用eclipse,我用opencv库编写了一个c ++代码,当我对它进行分析时,他给了我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秒或如何更改频率
答案 0 :(得分:0)
感谢您提供更多信息。在你的情况下,我会推荐一个好的分析器,一个在挂钟时间(不仅仅是像gprof
这样的CPU时间)上采样的探测器,它对整个调用堆栈进行采样(不仅仅是gprof
之类的程序计数器),并且按代码行报告包含百分比的时间(不仅仅是函数,就像大多数分析器一样)。其中一个是Zoom,它不是免费的,但您可以使用试用版。请记住,每行(不是每个功能)需要挂钟(非CPU)百分比(非绝对),包括(非自身)。
许多人认为他们正在寻找“慢功能”。 不需要。您需要了解的是更广泛的意义,为什么是花费大部分时间的程序。 您只能通过按行代码查看挂号时间的百分比来获取该信息。
另外,我建议您从堆栈采样器获得的输出将提供与调用图一样好或更好的显示。调用图往往有很多不相关的细节(低百分比的框)等。