问题
I did a generalization a an algorithm implementation.
Now, the new implementation runs more than 100 times slower than the old one.
My guess is that the source unnecessary use of inefficiency is implicit copy constructors that I somehow introduced. I tried to profile the code, but I get a lot of data that I do not understand. Do I really need to know STL internals to be able to profile STL based code?
Snippet of the flat profile:
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
5.22 0.52 0.52 9092637 0.00 0.00 std::_List_base<unsigned int, std::allocator<unsigned int> >::_M_clear()
4.11 0.93 0.41 25264275 0.00 0.00 std::_List_node<unsigned int>* std::list<unsigned int, std::allocator<unsigned int> >::_M_create_node<unsigned int const&>(unsigned int const&)
3.66 1.29 0.36 9084123 0.00 0.00 void std::list<unsigned int, std::allocator<unsigned int> >::_M_initialize_dispatch<std::_List_const_iterator<unsigned int> >(std::_List_const_iterator<unsigned int>, std::_List_const_iterator<unsigned int>, std::__false_type)
3.11 1.60 0.31 25264275 0.00 0.00 std::_List_node<unsigned int>::_List_node<unsigned int const&>(unsigned int const&)
2.61 1.86 0.26 101061221 0.00 0.00 unsigned int const& std::forward<unsigned int const&>(std::remove_reference<unsigned int const&>::type&)
2.56 2.12 0.26 25264275 0.00 0.00 std::list<unsigned int, std::allocator<unsigned int> >::push_back(unsigned int const&)
2.51 2.37 0.25 25264275 0.00 0.00 void std::list<unsigned int, std::allocator<unsigned int> >::_M_insert<unsigned int const&>(std::_List_iterator<unsigned int>, unsigned int const&)
2.41 2.61 0.24 9080201 0.00 0.00 std::vector<short, std::allocator<short> >::vector(std::vector<short, std::allocator<short> > const&)
2.21 2.83 0.22 9082855 0.00 0.00 std::list<unsigned int, std::allocator<unsigned int> >::list(std::list<unsigned int, std::allocator<unsigned int> > const&)
2.16 3.04 0.21 25264275 0.00 0.00 void __gnu_cxx::new_allocator<std::_List_node<unsigned int> >::construct<unsigned int const&>(std::_List_node<unsigned int>*, unsigned int const&)
2.01 3.25 0.20 25270362 0.00 0.00 __gnu_cxx::new_allocator<std::_List_node<unsigned int> >::allocate(unsigned int, void const*)
1.76 3.42 0.17 9091186 0.00 0.00 std::vector<short, std::allocator<short> >::size() const
1.71 3.59 0.17 50552766 0.00 0.00 std::_List_base<unsigned int, std::allocator<unsigned int> >::_M_get_Node_allocator()
1.71 3.76 0.17 25270362 0.00 0.00 std::_List_base<unsigned int, std::allocator<unsigned int> >::_M_put_node(std::_List_node<unsigned int>*)
1.65 3.92 0.17 9084123 0.00 0.00 std::_List_base<unsigned int, std::allocator<unsigned int> >::_List_base(std::allocator<unsigned int> const&)
1.55 4.08 0.15 9055760 0.00 0.00 bool __gnu_cxx::operator!=<std::vector<short, std::allocator<short> > const*, std::vector<std::vector<short, std::allocator<short> >, std::allocator<std::vector<short, std::allocator<short> > > > >(__gnu_cxx::__normal_iterator<std::vector<short, std::allocator<short> > const*, std::vector<std::vector<short, std::allocator<short> >, std::allocator<std::vector<short, std::allocator<short> > > > > const&, __gnu_cxx::__normal_iterator<std::vector<short, std::allocator<short> > const*, std::vector<std::vector<short, std::allocator<short> >, std::allocator<std::vector<short, std::allocator<short> > > > > const&)
1.50 4.23 0.15 25249466 0.00 0.00 std::_List_const_iterator<unsigned int>::operator++()
1.45 4.38 0.14 9084596 0.00 0.00 std::_Vector_base<short, std::allocator<short> >::~_Vector_base()
1.45 4.52 0.14 9051640 0.00 0.00 void std::_Construct<std::list<unsigned int, std::allocator<unsigned int> >, std::list<unsigned int, std::allocator<unsigned int> > const&>(std::list<unsigned int, std::allocator<unsigned int> >*, std::list<unsigned int, std::allocator<unsigned int> > const&)
1.40 4.66 0.14 4120 0.00 0.00 std::list<unsigned int, std::allocator<unsigned int> >* std::__uninitialized_copy<false>::__uninit_copy<__gnu_cxx::__normal_iterator<std::list<unsigned int, std::allocator<unsigned int> > const*, std::vector<std::list<unsigned int, std::allocator<unsigned int> >, std::allocator<std::list<unsigned int, std::allocator<unsigned int> > > > >, std::list<unsigned int, std::allocator<unsigned int> >*>(__gnu_cxx::__normal_iterator<std::list<unsigned int, std::allocator<unsigned int> > const*, std::vector<std::list<unsigned int, std::allocator<unsigned int> >, std::allocator<std::list<unsigned int, std::allocator<unsigned int> > > > >, __gnu_cxx::__normal_iterator<std::list<unsigned int, std::allocator<unsigned int> > const*, std::vector<std::list<unsigned int, std::allocator<unsigned int> >, std::allocator<std::list<unsigned int, std::allocator<unsigned int> > > > >, std::list<unsigned int, std::allocator<unsigned int> >*)
1.40 4.80 0.14 4120 0.00 0.00 std::vector<short, std::allocator<short> >* std::__uninitialized_copy<false>::__uninit_copy<__gnu_cxx::__normal_iterator<std::vector<short, std::allocator<short> > const*, std::vector<std::vector<short, std::allocator<short> >, std::allocator<std::vector<short, std::allocator<short> > > > >, std::vector<short, std::allocator<short> >*>(__gnu_cxx::__normal_iterator<std::vector<short, std::allocator<short> > const*, std::vector<std::vector<short, std::allocator<short> >, std::allocator<std::vector<short, std::allocator<short> > > > >, __gnu_cxx::__normal_iterator<std::vector<short, std::allocator<short> > const*, std::vector<std::vector<short, std::allocator<short> >, std::allocator<std::vector<short, std::allocator<short> > > > >, std::vector<short, std::allocator<short> >*)
1.30 4.93 0.13 9080202 0.00 0.00 std::_Vector_base<short, std::allocator<short> >::_Vector_impl::_Vector_impl(std::allocator<short> const&)
1.25 5.05 0.12 9051640 0.00 0.00 void std::_Construct<std::vector<short, std::allocator<short> >, std::vector<short, std::allocator<short> > const&>(std::vector<short, std::allocator<short> >*, std::vector<short, std::allocator<short> > const&)
1.20 5.17 0.12 9092637 0.00 0.00 std::list<unsigned int, std::allocator<unsigned int> >::~list()
1.20 5.29 0.12 4123 0.00 0.00 void std::_Destroy_aux<false>::__destroy<std::vector<short, std::allocator<short> >*>(std::vector<short, std::allocator<short> >*, std::vector<short, std::allocator<short> >*)
1.15 5.41 0.12 34333589 0.00 0.00 std::_List_const_iterator<unsigned int>::operator!=(std::_List_const_iterator<unsigned int> const&) const
1.10 5.52 0.11 9084596 0.00 0.00 std::vector<short, std::allocator<short> >::~vector()
1.10 5.63 0.11 9082398 0.00 0.00 short* std::copy<__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >, short*>(__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >, __gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >, short*)
1.05 5.74 0.10 9084123 0.00 0.00 std::_List_base<unsigned int, std::allocator<unsigned int> >::_List_impl::_List_impl(std::allocator<std::_List_node<unsigned int> > const&)
1.00 5.83 0.10 25532990 0.00 0.00 std::_List_iterator<unsigned int>::_List_iterator(std::__detail::_List_node_base*)
1.00 5.93 0.10 18164796 0.00 0.00 std::_Iter_base<__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >, false>::_S_base(__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >)
1.00 6.04 0.10 9092637 0.00 0.00 std::_List_base<unsigned int, std::allocator<unsigned int> >::~_List_base()
1.00 6.13 0.10 9080202 0.00 0.00 std::_Vector_base<short, std::allocator<short> >::_Vector_base(unsigned int, std::allocator<short> const&)
0.95 6.23 0.10 9082398 0.00 0.00 short* std::__uninitialized_copy<true>::__uninit_copy<__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >, short*>(__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >, __gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >, short*)
0.95 6.33 0.10 9082398 0.00 0.00 short* std::__copy_move_a2<false, __gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >, short*>(__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >, __gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >, short*)
0.90 6.42 0.09 9107748 0.00 0.00 std::vector<short, std::allocator<short> >::begin() const
0.90 6.50 0.09 9086793 0.00 0.00 void std::_Destroy<short*>(short*, short*)
0.90 6.59 0.09 9085052 0.00 0.00 std::list<unsigned int, std::allocator<unsigned int> >::begin() const
0.90 6.68 0.09 4123 0.00 0.00 void std::_Destroy_aux<false>::__destroy<std::list<unsigned int, std::allocator<unsigned int> >*>(std::list<unsigned int, std::allocator<unsigned int> >*, std::list<unsigned int, std::allocator<unsigned int> >*)
0.85 6.77 0.09 18164796 0.00 0.00 std::_Miter_base<__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > > >::iterator_type std::__miter_base<__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > > >(__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >)
0.85 6.86 0.09 9084123 0.00 0.00 std::allocator<std::_List_node<unsigned int> >::allocator<unsigned int>(std::allocator<unsigned int> const&)
0.85 6.94 0.09 9055760 0.00 0.00 bool __gnu_cxx::operator!=<std::list<unsigned int, std::allocator<unsigned int> > const*, std::vector<std::list<unsigned int, std::allocator<unsigned int> >, std::allocator<std::list<unsigned int, std::allocator<unsigned int> > > > >(__gnu_cxx::__normal_iterator<std::list<unsigned int, std::allocator<unsigned int> > const*, std::vector<std::list<unsigned int, std::allocator<unsigned int> >, std::allocator<std::list<unsigned int, std::allocator<unsigned int> > > > > const&, __gnu_cxx::__normal_iterator<std::list<unsigned int, std::allocator<unsigned int> > const*, std::vector<std::list<unsigned int, std::allocator<unsigned int> >, std::allocator<std::list<unsigned int, std::allocator<unsigned int> > > > > const&)
0.80 7.02 0.08 18280452 0.00 0.00 __gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >::__normal_iterator(short const* const&)
0.80 7.10 0.08 18164796 0.00 0.00 std::_Iter_base<__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >, true>::_S_base(__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >)
0.80 7.18 0.08 9092637 0.00 0.00 std::_List_base<unsigned int, std::allocator<unsigned int> >::_M_init()
0.80 7.26 0.08 9082398 0.00 0.00 short* std::__copy_move<false, true, std::random_access_iterator_tag>::__copy_m<short>(short const*, short const*, short*)
0.75 7.33 0.07 43405668 0.00 0.00 operator new(unsigned int, void*)
0.75 7.41 0.07 9085052 0.00 0.00 std::list<unsigned int, std::allocator<unsigned int> >::end() const
0.75 7.49 0.07 9082398 0.00 0.00 short* std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >, short*, short>(__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >, __gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >, short*, std::allocator<short>&)
0.75 7.56 0.07 9053837 0.00 0.00 void std::_Destroy<std::list<unsigned int, std::allocator<unsigned int> > >(std::list<unsigned int, std::allocator<unsigned int> >*)
0.70 7.63 0.07 25470908 0.00 0.00 std::list<unsigned int, std::allocator<unsigned int> >::end()
0.70 7.70 0.07 25270362 0.00 0.00 std::_List_base<unsigned int, std::allocator<unsigned int> >::_M_get_node()
0.70 7.77 0.07 25249466 0.00 0.00 std::_List_const_iterator<unsigned int>::operator*() const
0.70 7.84 0.07 9134142 0.00 0.00 std::vector<short, std::allocator<short> >::end() const
0.70 7.91 0.07 9086793 0.00 0.00 void std::_Destroy<short*, short>(short*, short*, std::allocator<short>&)
0.70 7.98 0.07 9080202 0.00 0.00 std::allocator<short>::allocator(std::allocator<short> const&)
0.65 8.04 0.07 18170104 0.00 0.00 std::_List_const_iterator<unsigned int>::_List_const_iterator(std::__detail::_List_node_base const*)
0.65 8.11 0.07 18164796 0.00 0.00 std::_Niter_base<__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > > >::iterator_type std::__niter_base<__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > > >(__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >)
0.65 8.18 0.07 18107674 0.00 0.00 std::list<unsigned int, std::allocator<unsigned int> >* std::__addressof<std::list<unsigned int, std::allocator<unsigned int> > >(std::list<unsigned int, std::allocator<unsigned int> >&)
0.65 8.24 0.07 9051640 0.00 0.00 __gnu_cxx::__normal_iterator<std::list<unsigned int, std::allocator<unsigned int> > const*, std::vector<std::list<unsigned int, std::allocator<unsigned int> >, std::allocator<std::list<unsigned int, std::allocator<unsigned int> > > > >::operator++()
0.60 8.30 0.06 25270362 0.00 0.00 __gnu_cxx::new_allocator<std::_List_node<unsigned int> >::deallocate(std::_List_node<unsigned int>*, unsigned int)
0.60 8.36 0.06 25270362 0.00 0.00 __gnu_cxx::new_allocator<std::_List_node<unsigned int> >::destroy(std::_List_node<unsigned int>*)
0.60 8.42 0.06 18176760 0.00 0.00 __gnu_cxx::new_allocator<std::_List_node<unsigned int> >::~new_allocator()
0.60 8.48 0.06 18111520 0.00 0.00 __gnu_cxx::__normal_iterator<std::vector<short, std::allocator<short> > const*, std::vector<std::vector<short, std::allocator<short> >, std::allocator<std::vector<short, std::allocator<short> > > > >::base() const
0.60 8.54 0.06 9084596 0.00 0.00 std::_Vector_base<short, std::allocator<short> >::_Vector_impl::~_Vector_impl()
0.60 8.60 0.06 9084596 0.00 0.00 std::_Niter_base<short*>::iterator_type std::__niter_base<short*>(short*)
0.50 8.65 0.05 25270362 0.00 0.00 std::_List_node<unsigned int>::~_List_node()
0.50 8.70 0.05 18268284 0.00 0.00 __gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >::base() const
0.45 8.74 0.04 9053837 0.00 0.00 void std::_Destroy<std::vector<short, std::allocator<short> > >(std::vector<short, std::allocator<short> >*)
0.45 8.79 0.04 24348 0.00 0.00 unsigned int&& std::forward<unsigned int>(std::remove_reference<unsigned int>::type&)
0.40 8.83 0.04 18176760 0.00 0.00 std::allocator<std::_List_node<unsigned int> >::~allocator()
0.40 8.87 0.04 18107674 0.00 0.00 std::vector<short, std::allocator<short> >* std::__addressof<std::vector<short, std::allocator<short> > >(std::vector<short, std::allocator<short> >&)
0.40 8.91 0.04 9086793 0.00 0.00 void std::_Destroy_aux<true>::__destroy<short*>(short*, short*)
0.40 8.95 0.04 9084596 0.00 0.00 std::_Vector_base<short, std::allocator<short> >::_M_allocate(unsigned int)
0.40 8.99 0.04 9082398 0.00 0.00 short* std::__copy_move_a<false, short const*, short*>(short const*, short const*, short*)
0.40 9.03 0.04 9082398 0.00 0.00 short* std::uninitialized_copy<__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >, short*>(__gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >, __gnu_cxx::__normal_iterator<short const*, std::vector<short, std::allocator<short> > >, short*)
0.40 9.07 0.04 9051640 0.00 0.00 __gnu_cxx::__normal_iterator<std::list<unsigned int, std::allocator<unsigned int> > const*, std::vector<std::list<unsigned int, std::allocator<unsigned int> >, std::allocator<std::list<unsigned int, std::allocator<unsigned int> > > > >::operator*() const
0.35 9.11 0.04 18171389 0.00 0.00 std::_Vector_base<short, std::allocator<short> >::_M_get_Tp_allocator()
0.35 9.14 0.04 9084123 0.00 0.00 std::allocator<std::_List_node<unsigned int> >::allocator(std::allocator<std::_List_node<unsigned int> > const&)
0.35 9.18 0.04 9051640 0.00 0.00 __gnu_cxx::__normal_iterator<std::vector<short, std::allocator<short> > const*, std::vector<std::vector<short, std::allocator<short> >, std::allocator<std::vector<short, std::allocator<short> > > > >::operator++()
0.35 9.21 0.04 9051640 0.00 0.00 std::vector<short, std::allocator<short> > const& std::forward<std::vector<short, std::allocator<short> > const&>(std::remove_reference<std::vector<short, std::allocator<short> > const&>::type&)
0.35 9.24 0.04 1 0.04 0.04 redelemeier_with_pruning::full_convex_counter_3d(int, int, unsigned long long, unsigned long long, std::vector<unsigned long long, std::allocator<unsigned long long> >*, std::basic_ofstream<char, std::char_traits<char> >*)
0.30 9.28 0.03 9088244 0.00 0.00 std::allocator<unsigned int>::~allocator()
0.30 9.30 0.03 9086793 0.00 0.00 std::_Vector_base<short, std::allocator<short> >::_M_deallocate(short*, unsigned int)
0.25 9.33 0.03 25270362 0.00 0.00 __gnu_cxx::new_allocator<std::_List_node<unsigned int> >::max_size() const
0.25 9.36 0.03 9084596 0.00 0.00 __gnu_cxx::new_allocator<short>::allocate(unsigned int, void const*)
0.25 9.38 0.03 9084123 0.00 0.00 std::allocator<unsigned int>::allocator<std::_List_node<unsigned int> >(std::allocator<std::_List_node<unsigned int> > const&)
0.25 9.40 0.03 9082855 0.00 0.00 std::_List_base<unsigned int, std::allocator<unsigned int> >::_M_get_Node_allocator() const
0.20 9.43 0.02 18111520 0.00 0.00 __gnu_cxx::__normal_iterator<std::list<unsigned int, std::allocator<unsigned int> > const*, std::vector<std::list<unsigned int, std::allocator<unsigned int> >, std::allocator<std::list<unsigned int, std::allocator<unsigned int> > > > >::base() const
0.20 9.45 0.02 9092637 0.00 0.00 __gnu_cxx::new_allocator<std::_List_node<unsigned int> >::new_allocator()
0.20 9.46 0.02 9092637 0.00 0.00 std::_List_base<unsigned int, std::allocator<unsigned int> >::_List_impl::~_List_impl()
0.20 9.48 0.02 9088244 0.00 0.00 __gnu_cxx::new_allocator<unsigned int>::~new_allocator()
0.20 9.51 0.02 9084596 0.00 0.00 __gnu_cxx::new_allocator<short>::deallocate(short*, unsigned int)
0.20 9.53 0.02 9080201 0.00 0.00 std::_Vector_base<short, std::allocator<short> >::_M_get_Tp_allocator() const
0.20 9.54 0.02 9051640 0.00 0.00 __gnu_cxx::__normal_iterator<std::vector<short, std::allocator<short> > const*, std::vector<std::vector<short, std::allocator<short> >, std::allocator<std::vector<short, std::allocator<short> > > > >::operator*() const
0.20 9.56 0.02 495658 0.00 0.00 __gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned int, std::allocator<unsigned int> > >::__normal_iterator(unsigned int* const&)
0.20 9.59 0.02 34461 0.00 0.00 std::list<unsigned int, std::allocator<unsigned int> >::begin()
0.20 9.61 0.02 18637 0.00 0.00 std::_List_iterator<unsigned int>::operator==(std::_List_iterator<unsigned int> const&) const
0.20 9.62 0.02 6087 0.00 0.00 std::_List_node<unsigned int>* std::list<unsigned int, std::allocator<unsigned int> >::_M_create_node<unsigned int>(unsigned int&&)
0.20 9.64 0.02 6087 0.00 0.00 std::remove_reference<unsigned int&>::type&& std::move<unsigned int&>(unsigned int&)
0.15 9.66 0.01 9084597 0.00 0.00 __gnu_cxx::new_allocator<short>::~new_allocator()
0.15 9.68 0.01 9084123 0.00 0.00 __gnu_cxx::new_allocator<std::_List_node<unsigned int> >::new_allocator(__gnu_cxx::new_allocator<std::_List_node<unsigned int> > const&)
0.15 9.69 0.01 31742 0.00 0.00 std::vector<unsigned int, std::allocator<unsigned int> >::begin()
0.15 9.71 0.01 6087 0.00 0.00 void std::list<unsigned int, std::allocator<unsigned int> >::_M_insert<unsigned int>(std::_List_iterator<unsigned int>, unsigned int&&)
0.15 9.72 0.01 4395 0.00 0.00 __gnu_cxx::new_allocator<short>::new_allocator()
0.15 9.73 0.01 2 0.01 0.01 __gnu_cxx::new_allocator<std::vector<short, std::allocator<short> > >::new_allocator()
0.15 9.75 0.01 __gnu_cxx::__normal_iterator<short*, std::vector<short, std::allocator<short> > >::base() const
0.15 9.77 0.01 std::_Niter_base<__gnu_cxx::__normal_iterator<short*, std::vector<short, std::allocator<short> > > >::iterator_type std::__niter_base<__gnu_cxx::__normal_iterator<short*, std::vector<short, std::allocator<short> > > >(__gnu_cxx::__normal_iterator<short*, std::vector<short, std::allocator<short> > >)
0.10 9.78 0.01 9084596 0.00 0.00 __gnu_cxx::new_allocator<short>::max_size() const
0.10 9.79 0.01 9084596 0.00 0.00 std::_Iter_base<short*, false>::_S_base(short*)
0.10 9.79 0.01 9084124 0.00 0.00 __gnu_cxx::new_allocator<unsigned int>::new_allocator()
0.10 9.80 0.01 216086 0.00 0.00 bool __gnu_cxx::operator!=<unsigned int*, std::vector<unsigned int, std::allocator<unsigned int> > >(__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned int, std::allocator<unsigned int> > > const&, __gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned int, std::allocator<unsigned int> > > const&)
0.10 9.81 0.01 206056 0.00 0.00 std::_Bit_const_iterator::operator*() const
0.10 9.82 0.01 173040 0.00 0.00 std::_Bit_iterator_base::_M_bump_up()
0.10 9.84 0.01 8243 0.00 0.00 __gnu_cxx::new_allocator<unsigned long>::~new_allocator()
0.10 9.85 0.01 8242 0.00 0.00 unsigned int* std::__uninitialized_move_a<unsigned int*, unsigned int*, std::allocator<unsigned int> >(unsigned int*, unsigned int*, unsigned int*, std::allocator<unsigned int>&)
0.10 9.86 0.01 8242 0.00 0.00 void std::_Destroy<unsigned int*, unsigned int>(unsigned int*, unsigned int*, std::allocator<unsigned int>&)
0.10 9.87 0.01 8240 0.00 0.00 std::_Miter_base<unsigned long*>::iterator_type std::__miter_base<unsigned long*>(unsigned long*)
0.10 9.88 0.01 4121 0.00 0.00 std::vector<unsigned int, std::allocator<unsigned int> >::_M_check_len(unsigned int, char const*) const
0.05 9.88 0.01 9084597 0.00 0.00 std::allocator<short>::~allocator()
0.05 9.88 0.01 9080202 0.00 0.00 __gnu_cxx::new_allocator<short>::new_allocator(__gnu_cxx::new_allocator<short> const&)
0.05 9.89 0.01 9051640 0.00 0.00 std::list<unsigned int, std::allocator<unsigned int> > const& std::forward<std::list<unsigned int, std::allocator<unsigned int> > const&>(std::remove_reference<std::list<unsigned int, std::allocator<unsigned int> > const&>::type&)
0.05 9.89 0.01 186330 0.00 0.00 std::vector<unsigned int, std::allocator<unsigned int> >::size() const
来源:https://stackoverflow.com/questions/31794197/interpreting-profiler-log-for-stl-based-code