Difference between revisions of "Calc/Performance/Specific Bottlenecks"

From Apache OpenOffice Wiki
Jump to: navigation, search
(relocated the Ou case to Calc/Performance/The_Ou_case)
(other)
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
'''Specific bottlenecks''' to be worked on, identified using tools such as
 
<code>[[Callgrind| valgrind --tool=callgrind]]</code>.
 
 
 
 
== The Zaske case ==
 
== The Zaske case ==
  
Content relocated to [[Calc/Performance/Zaske]], section preserved for external references linking here.
+
Done. Content relocated to [[Calc/Performance/The_Zaske_case]], section preserved for external references linking here.
  
 
== Sorting values within functions ==
 
== Sorting values within functions ==
  
Content relocated to [[Calc/Performance/sorting_values_within_functions]], section preserved for external references linking here.
+
Done. Content relocated to [[Calc/Performance/sorting_values_within_functions]], section preserved for external references linking here.
 
+
== Querying data within functions ==
+
 
+
An internal customer's document (sorry, can't publish) doing lookup queries
+
that don't fit into the current caching strategy.
+
 
+
Findings:
+
 
+
* 8% in 51613353 calls to com::sun::star::i18n::casefolding::getNextChar() via
+
** 39696595 calls to utl::TransliterationWrapper::isEqual() via
+
*** ScTable::ValidQuery() via
+
**** 8888 calls to ScQueryCellIterator::GetThis() via
+
***** lcl_LookupQuery()
+
 
+
* 5% in ScTableValidQuery() most in String() and ~String() of aCellStr
+
 
+
* 200873636 calls to com::sun::star::i18n::casefolding::getNextChar() via
+
** 33173401 calls to com::sun::star::i18n::Transliteration_caseignore::compare()
+
 
+
* 5% in com::sun::star::i18n::oneToOneMappingWithFlag::find()
+
** Replicated mpIndex[high] access, might be better using temporary pointer.
+
 
+
* 5% in com::sun::star::i18n::casefolding::getValue()
+
 
+
* 58% overall in ScTable::ValidQuery() and below
+
** '''TODO:''' Cache results of ValidQuery()? Similar to ScLookupCache?
+
  
* 11% overall in 27341713 calls to ScBroadcastAreaSlot::StartListeningArea() and below, of which 10% are in ::std::set::insert() and below.
+
== other ==
** '''TODO:''' refactor implementation of broadcast slots.
+
  
 +
For other performance optimization tasks previously located here please see the individual pages listed under [[Calc/Performance]].
 +
 
  
[[Category:Calc|Performance/Specific_Bottlenecks]]
+
[[Category:Calc]]
[[Category:Performance]]
+
[[Category:To-Do]]
+
[[Category:InProgress]]
+

Latest revision as of 06:38, 4 December 2009

The Zaske case

Done. Content relocated to Calc/Performance/The_Zaske_case, section preserved for external references linking here.

Sorting values within functions

Done. Content relocated to Calc/Performance/sorting_values_within_functions, section preserved for external references linking here.

other

For other performance optimization tasks previously located here please see the individual pages listed under Calc/Performance.

Personal tools