Interpreting profiler log for STL based code

笑着哭i 提交于 2019-12-13 06:08:01

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!