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@novell.com <><, Pseudo Engineer, itinerant idiot
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.