[GSOC] Fix for performance loss due to recalc of volatile cells

Daniel Bankston daniel.dev.libreoffice at gmail.com
Thu Jul 12 01:46:02 PDT 2012


Hi, Kohei and Markus,

Our latest changes that recalculate volatile formulas at the end of 
import resulted in several seconds performance loss on a large matrix 
test file with complex formulas.

When the matrix cells are put in the document, ScFormulaCell::SetDirty() 
gets called.  Although the cells are set clean during import after this, 
SetDirty() also uses ScDocument::TrackFormulas() which puts the cells in 
the formula tree.  So when we call ScDocument::DoRecalc() at the end of 
import, the interpreter goes through all matrix cells because they are 
in the formula tree.

My changes in the attached diff prevent this from happening, which gives 
us back our performance.  Is this approach ok?


Respectfully,
Daniel Bankston
-------------- next part --------------
A non-text attachment was scrubbed...
Name: matrix_import_improvement.diff
Type: text/x-patch
Size: 4420 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20120712/71c29e34/attachment.bin>


More information about the LibreOffice mailing list