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'


Reply via email to