[Libreoffice] Calc - a better design ...

Michael Meeks michael.meeks at novell.com
Thu Jul 28 01:54:49 PDT 2011


Hi Kevin,

On Thu, 2011-07-28 at 01:07 -0400, Kevin Hunter wrote:
> Actually, as text it is convincing.

	Hah ;-) there is a lot more, around dependencies. You'd be surprised at
how much time + space is spent in a spreadsheet making sure we only
re-calculate the right pieces.

>  So my original analogy to CSS works, but your example of
> sum(*array) vs for(i = 0...) and making use of SIMD is also telling.

	Good 'oh :-)

> Who is working on these particular internals, if anybody?  Do I take 
> from your last sentence that the answer is "partially nobody"?

	AFAIK no-one; I'd get stuck into ixion though, hopefully that will
provide the future of calc. Failing that, we can do some
pre-re-factoring that'll help the calc core before we get all the way
there. Reducing the footprint of ScCell * around the place would be
particularly helpful: eg. for undo/redo might be useful - and splitting
things out of it.

	One way to get a good exposure to that is to work at removing the
'ScPostIt *mpNote' pointer that is in every ScCell. That adds a pointer
(4 or 8 bytes) to every single cell, despite there being almost no notes
in almost all spreadsheets :-) Also the UNO implementation of note
navigation is risible, with an O(n) where n is (count-of-cells-in-sheet)
implementation - which we use for saving to ODF. So some real
performance / memory savings possible there - and of course you'll
quickly become familiar with the pain points around galloping ScCell
usage everywhere :-)

> I would /love/ to get my hands dirty on exactly this kind of 
> restructuring and code work ... if only my hands weren't currently tied 
> to a graduate degree that I also enjoy.  Sigh.

	So - the above is a good way to get started I suppose :-) certainly for
large sheets it will save some memory, help lay the foundations of an
eventual re-factoring away from an 'ScCell *' world, and perhaps improve
performance in some cases too.

	HTH,

		Michael.

-- 
 michael.meeks at novell.com  <><, Pseudo Engineer, itinerant idiot



More information about the LibreOffice mailing list