octave-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Octave-bug-tracker] [bug #56752] Performance slowdown from version 3.2.


From: Rik
Subject: [Octave-bug-tracker] [bug #56752] Performance slowdown from version 3.2.4 through to current dev branch
Date: Tue, 3 Sep 2019 20:43:17 -0400 (EDT)
User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

Follow-up Comment #33, bug #56752 (project octave):

I have re-run the benchmark with code profiling.  See results below.

Interesting hotspots still seem to be octave::symbol_table::find_function at
24.82% (basically 1/4) of runtime.  Maybe we need an O(1) cache that gets used
UNLESS something like a new class has been created or a timestamp has changed.
 The function octave::tree_evaluator::convert_to_const_vector at 11.21% also
seems large.  The function octave::tree_index_expression::lvalue takes 16% of
run time, but 60% of that 16% is due to convert_to_const_vector so it seems
worth working on that first.  Little things like constructors and destructors
taking on order 1% of run time seem innocuous, but I haven't added them all up
to see if we still need to make improvements (lighter weight constructors) for
octave_value and octave_value_list.



-   86.91%     1.73%  octave-cli  liboctinterp.so.7.0.0  [.]
octave::tree_simple_assignment::evaluate
   - 85.18% octave::tree_simple_assignment::evaluate
      - 56.49% octave::tree_binary_expression::evaluate
         - 53.78% octave::tree_index_expression::evaluate
            - 51.81% octave::tree_index_expression::evaluate_n
               - 24.82% octave::symbol_table::find_function
                  - 24.72% octave::symbol_table::fcn_table_find
                     - 21.80% octave::fcn_info::fcn_info_rep::find
                        - 20.80% octave::fcn_info::fcn_info_rep::xfind
                           - 7.86%
octave::fcn_info::fcn_info_rep::find_method
                              - 6.35%
octave::fcn_info::fcn_info_rep::load_class_method
                                   1.36% __memmove_avx_unaligned_erms
                                 + 1.30%
octave::cdef_manager::find_method_symbol
                                   0.80%
octave::load_path::package_info::find_method
                           - 4.51%
octave::fcn_info::fcn_info_rep::load_class_constructor
                              - 2.76%
octave::fcn_info::fcn_info_rep::find_user_function
                                 - 2.17%
octave::load_path::package_info::find_fcn
                                      1.27%
std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std
                                      0.67% __memcmp_avx2_movbe
                           - 2.15%
octave::fcn_info::fcn_info_rep::find_autoload
                                0.84% __memcmp_avx2_movbe
                                0.76% octave::tree_evaluator::lookup_autoload
                           - 1.74%
octave::fcn_info::fcn_info_rep::find_user_function
                              + 1.16%
octave::load_path::package_info::find_fcn
                           + 1.72%
octave::fcn_info::fcn_info_rep::find_package
                             0.62% octave_value::~octave_value
                       1.12% std::_Rb_tree<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::pair<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<cha
                       0.90% __memcmp_avx2_movbe
               - 11.21% octave::tree_evaluator::convert_to_const_vector
                  - 8.69% octave::tree_binary_expression::evaluate
                     - 5.79% octave::tree_identifier::evaluate
                        - 4.18% octave::tree_identifier::evaluate_n
                             0.82% octave::tree_evaluator::varval
                             0.52% octave_value::~octave_value
                          0.59% Array<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >::~Array
                       1.31% do_binary_op
                    1.04% octave_value_list::octave_value_list
               - 6.22% octave_builtin::call
                    1.40% Fabs
                    1.34% octave::action_container::run
                  + 0.86% octave::call_stack::push
                    0.64% octave_value_list::make_storable_values
               + 1.11% octave::tree_evaluator::is_variable
                 0.70% Array<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >::~Array
                 0.70% Array<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >::operator=
                 0.65% octave::tree_evaluator::varval
                 0.60% octave_value_list::operator=
                 0.54% Array<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >::operator=
                 0.52% octave::action_container::run
           1.20% do_binary_op
      - 15.96% octave::tree_index_expression::lvalue
         - 9.86% octave::tree_evaluator::convert_to_const_vector
            - 5.97% octave::tree_identifier::evaluate
               - 4.34% octave::tree_identifier::evaluate_n
                    0.84% octave::tree_evaluator::varval
                    0.58% octave_value::~octave_value
                 0.62% Array<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > >::~Array
              1.60% octave_value_list::octave_value_list
         + 1.00% octave::octave_lvalue::set_index
           0.80% std::__cxx11::_List_base<octave_value_list,
std::allocator<octave_value_list> >::_M_clear
           0.54% octave_value::~octave_value
      - 7.99% octave::octave_lvalue::assign
         - 7.07% octave_value::assign
            - 6.57% octave_value::subsasgn
               - 6.22% octave_base_matrix<NDArray>::subsasgn
                  - 5.56% octave_base_value::numeric_assign
                     - 4.22% oct_assignop_assign
                        - 3.00% octave_base_matrix<NDArray>::assign
                           - 0.82% Array<double>::Array
                                0.51% dim_vector::safe_numel
      - 1.02% std::__cxx11::_List_base<octave::octave_lvalue,
std::allocator<octave::octave_lvalue> >::_M_clear
           0.71% std::__cxx11::_List_base<octave_value_list,
std::allocator<octave_value_list> >::_M_clear
        0.87% octave::action_container::run
        0.63% std::__cxx11::_List_base<octave_value_list,
std::allocator<octave_value_list> >::_M_clear





    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?56752>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]