Phi*_*ipp 6 c++ optimization gprof
我试图在我的程序中找到性能问题,从而通过分析对代码进行检测.gprof创建一个像这样的平面轮廓:
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
27.97 4.10 4.10 std::_Deque_iterator<char, char&, char*>::_Deque_iterator(std::_Deque_iterator<char, char&, char*> const&)
6.96 5.12 1.02 std::_Deque_iterator<char, char&, char*>::difference_type std::operator-<char, char&, char*>(std::_Deque_iterator<char, char&, char*> const&, std::_Deque_iterator<char, char&, char*> const&)
5.12 5.87 0.75 std::__deque_buf_size(unsigned int)
4.23 6.49 0.62 std::_Deque_iterator<char, char&, char*>::operator+=(int)
3.41 6.99 0.50 std::deque<char, std::allocator<char> >::begin()
1.91 7.27 0.28 7896 0.04 0.04 std::vector<MyClass, std::allocator<MyClass> >::_M_insert_aux(__gnu_cxx::__normal_iterator<MyClass*, std::vector<MyClass, MyClasst> > >, MyClassconst&)
1.91 7.55 0.28 std::deque<char, std::allocator<char> >::size() const
1.91 7.83 0.28 std::_Deque_iterator<char, char&, char*>::_S_buffer_size()
Run Code Online (Sandbox Code Playgroud)
其次是许多行,时间更短.
第一个问题:认为std :: deque似乎存在问题是一个有效的假设吗?问题是:我知道我们正在使用std :: deque,但我不知道使用它<char>.
如果这个假设是正确的,那么查看调用堆栈并查看此双端队列的使用位置似乎是有意义的.但是所有关于这些deque<char>东西的条目都只是被称为<spontaneous>!
只举一个例子:
index % time self children called name
<spontaneous>
[1] 28.0 4.10 0.00 std::_Deque_iterator<char, char&, char*>::_Deque_iterator(std::_Deque_iterator<char, char&, char*> const&) [1]
Run Code Online (Sandbox Code Playgroud)
有没有办法找到关于这个双端队列的更多信息?
谢谢你的任何提示!
显然,当 gprof 无法计算出调用函数时,它会使用自发性。我会尝试使用 -pg 重新编译所有代码(您是否可能错过了一些文件?)。另外,请确保您已打开优化。内联通常会使这些小函数消失在调用函数中,这通常更有用。
| 归档时间: |
|
| 查看次数: |
2142 次 |
| 最近记录: |