Andre Poenitz a écrit :
On Wed, Jan 04, 2006 at 11:53:45AM +0100, Abdel wrote:
From what I see it uses size() and operator[] so deque would be fine
here also. But maybe rewriting this patch to use ParagraphList::iterator
and algorithm::find would be better, wouldn't it? This way we won't rely
on vector property.
We heavily rely on operator[] being reasonably fast, i.e. O(1)
maybe O(ln n). Certainly not O(n).
Note that my dual vector-list approach should offer o(1) operator[] access.
Like it is now, IMHO, lyx-1.4 is close to unusable under window. Is
Andre had something that IIRC would replace the official insert() by a
homegrown one, presumably faster. (What's the status of that?)
I think it is possible to rewrite the ParagraphList class that would not
need the removal of the official insert(), only a cosmetic change.
IMHO, a good solution would be to use a list<Paragraph> member to store
the paragraphs and a vector<list<Paragraph>::iterator> for the
interface. This way ParagraphList::insert would call list::insert and
then update the vector or list iterator. I believe this would imply
minimal change to the code using ParagraphList; we would just need to
replace "insert(XXX.begin()+pos, Par)" with "insert(pos, Par)". Here is
a class prototype (not tested):
class ParagraphList
{
[...]
};
What do think?
Ok if it works. Could be even faster than the custom swap-based insert()
implmentation as swapping paragraphs is still slower than assigning
Paragraph pointers.
I would be happy to work on this once the signal is emitted :-)
Abdel.
Andre'