[prev in list] [next in list] [prev in thread] [next in thread]
List: koffice
Subject: Re: kspread slowness with a lot of data
From: Philipp =?iso-8859-15?q?M=FCller?= <philipp.mueller () gmx ! de>
Date: 2003-02-23 8:32:46
[Download RAW message or body]
Hello Vladimir,
we should move this thread to koffice-devel.
On Saturday 22 February 2003 22:55, Vladimir Dergachev wrote:
> > > Also I'll take a
> > > look at the cell size issue, perhaps there is an easy way to fix \
> > > this).
> >
> > Sadly to say, I doubt there is an easy fix possible. This is about
> > changing a fundamental part of KSpread. Or in other words, this is \
> > about a basic design failure.
>
> Well, I really have to look at the code for this, but my preliminary plan
> was to separate some of the fields into an attribute struct and let the
> cells only keep a pointer to it.
>
> The attribute structs would have a use count and when use is greater than
> one there would be a copy-on-write policy.
>
> Lastly the attributes structs could be hashed for easy merging so that
> group operations (change color of 1000 cells to red) do not require extra
> work in the code.
Yes, this is one of the 3 concepts, we intend to do for the layout stuff.
We call it 'flyweight' system. See the description of John:
http://webcvs.kde.org/cgi-bin/cvsweb.cgi/koffice/kspread/FORMATTING_DESIGN?rev=1.1&content-type=text/x-cvsweb-markup
The other 2 concepts are about a style manager and ranges.
All 3 together will make KSpread perfect, it's not either / or.
Additional you should have a look into the mails we had in December on the
koffice-devel ML:
http://lists.kde.org/?l=koffice-devel&m=103956168404091&w=2
http://lists.kde.org/?l=koffice-devel&m=103979269812417&w=2
http://lists.kde.org/?l=koffice-devel&m=103981153401737&w=2
http://lists.kde.org/?l=koffice-devel&m=103988640810489&w=2
http://lists.kde.org/?l=koffice-devel&m=104014455230215&w=2
> I have taken a look at the code (Gahh ! This seems to be the heaviest
> use of C++ that I saw since mozilla) and I have lots of questions.
Hehe, of course this is C++. Some questions others should answer, as I'm \
not a C++ guru. Maybe Ariya or David?
> 1) How can I tell whether a given method in a class (specifically
> KSpreadCell) is assigned an entry in a virtual table or not ?
>
> 2) Am I correct in noting that KSpreadCells are not being aggregated
> anywhere in kspread ? (I looked at KSpreadSheet and KSpreadCluster
> objects)
With aggregation you mean "shared" somehow? The value itself is shared (see \
below). But we should focus on the layout stuff, don't bother at the \
moment about stuff like nextCell, dependOn, etc.
Layout information is currently not shared. But we have them stored \
redundant at 3 places: default Cell, Rows/Columns and the Cell itself.
> 3) What does "const;" in the end of method declaration mean ?
That the method doesn't change any value.
> 4) I am correct in thinking that all cells elements are stored
> as strings. (I.e. m_strText and m_strOutText are the only
> places which store cell value).
Not really. The elements are stored in KSpreadValue. This is a shared \
object with copy on change.
m_strText and m_strOutText are there only for performance issues (which is
IMHO not necessary). KSpreadValue stores e.g. 1034.5623, then m_strText
contains the formated string e.g. 1035.6 ¤ and m_strOutText contains the \
real output e.g. limited width of a cell 1035.
The recalculation of m_strText and m_strOutText is done via makeLayout. I \
see no real point in storing them in each cell, when we can recalculate \
them on paint.
Philipp
____________________________________
koffice mailing list
koffice@mail.kde.org
To unsubscribe please visit:
http://mail.kde.org/mailman/listinfo/koffice
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic