0

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
Artium
  • 5,147
  • 8
  • 39
  • 60
  • 1
    You should probably use a profiler that can produce more readable and complete output than this, or some software to refine the the raw data your profiler gave you. This is really not very useful since you cannot even see who called these functions. – Baum mit Augen Aug 03 '15 at 18:33
  • 1
    [*Try this.*](http://stackoverflow.com/a/378024/23771) You say it's 100 times slower? That means a single sample (2 or 3 for good measure) will tell you exactly what's going on. BTW: [*all about gprof.*](http://archive.is/9r927) – Mike Dunlavey Aug 04 '15 at 11:39
  • 1
    @Mike That technique works like a charm! – Artium Aug 04 '15 at 18:47

0 Answers0