Difference between revisions of "Calc/Performance/The Ou case"
From Apache OpenOffice Wiki
< Calc | Performance
(The Ou case) |
|||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{Performance}} | ||
{{DISPLAYTITLE:The Ou Case}} | {{DISPLAYTITLE:The Ou Case}} | ||
Line 5: | Line 6: | ||
References: | References: | ||
* [http://blogs.zdnet.com/Ou/?p=120 George Ou's blog entry] | * [http://blogs.zdnet.com/Ou/?p=120 George Ou's blog entry] | ||
− | * [http://www.lanarchitect.net/Examples/200264-l.sxc The test case file] (.sxc) | + | * [http://www.lanarchitect.net/Examples/200264-l.sxc The test case file] (.sxc), convert to ODF .ods for profiling |
* [http://www.lanarchitect.net/Examples/200264-l.zip Same data, but zip'ed Excel-XML] | * [http://www.lanarchitect.net/Examples/200264-l.zip Same data, but zip'ed Excel-XML] | ||
+ | Note that the numbers published in the article compare Excel .xls binary file format with Calc .ods, which is apples and oranges. | ||
Findings: | Findings: | ||
− | * source/filter/xml/xmlsubti.cxx | + | * [http://svn.services.openoffice.org/opengrok/xref/Current%20(trunk)/sc/source/filter/xml/xmlsubti.cxx source/filter/xml/xmlsubti.cxx] |
** 38% of time spent in ScMyTables::NewColumn() because of replicated use of aTableVec[nTableCount - 1] (vector::operator[]) <br> Note: percentage may be off due to compilation without optimization to obtain exact line numbers that may result in STLport's vector methods being differently compiled. | ** 38% of time spent in ScMyTables::NewColumn() because of replicated use of aTableVec[nTableCount - 1] (vector::operator[]) <br> Note: percentage may be off due to compilation without optimization to obtain exact line numbers that may result in STLport's vector methods being differently compiled. | ||
*** proposed fix: should obtain the pointer once instead. | *** proposed fix: should obtain the pointer once instead. | ||
Line 21: | Line 23: | ||
− | [[Category:Calc|Performance/ | + | [[Category:Calc|Performance/{{SUBPAGENAME}}]] |
[[Category:Performance]] | [[Category:Performance]] | ||
[[Category:To-Do]] | [[Category:To-Do]] | ||
[[Category:InProgress]] | [[Category:InProgress]] |
Latest revision as of 20:03, 4 December 2010
|
---|
Quick Navigation Team Communication Activities |
About this template |
Loading a large plain data file takes very long.
References:
- George Ou's blog entry
- The test case file (.sxc), convert to ODF .ods for profiling
- Same data, but zip'ed Excel-XML
Note that the numbers published in the article compare Excel .xls binary file format with Calc .ods, which is apples and oranges.
Findings:
- source/filter/xml/xmlsubti.cxx
- 38% of time spent in ScMyTables::NewColumn() because of replicated use of aTableVec[nTableCount - 1] (vector::operator[])
Note: percentage may be off due to compilation without optimization to obtain exact line numbers that may result in STLport's vector methods being differently compiled.- proposed fix: should obtain the pointer once instead.
- Similar for other places where aTableVec[xxx] is used.
- 38% of time spent in ScMyTables::NewColumn() because of replicated use of aTableVec[nTableCount - 1] (vector::operator[])
- TODO: Check all ScMyTables::.*() and ScMyTableData::.*()
- Especially for 63342857 calls to AddColumn() and NewColumn() that result in 1168654944 calls to operator[] ...
- 63081776 calls to AddColumn() originate from ScXMLTableRowCellContext::EndElement()
- Those are highly suspicious and seem to indicate that too many temporary elements are created for empty columns/cells (needs verification).