Neil,

I should probably mention that I am not using one of the tried and true platforms. I've been trying to implement the platform compatibility layer in Qt 4. My development platforms are Mac OS X and windows. I'm getting on pretty well.

We did evaluate qscintilla first but determined that waiting for the transition to 4 would cost more in the long run than doing our own implementation. We also found the license less than ideal. In any case we are very pleased with scintilla so far.

I have done some fairly extensive profiling because of redraw performance concerns. After streamlining the font metrics routines in my platform code I find that an obscene majority (north of 95 percent) of time is spent just rendering text. This, I suppose, shouldn't come as any great surprise. That is why I have turned my attention to trying to avoid any unnecessary repainting. Like I said before, performance is pretty good with just one widget, but initial tests with two scrolled together show some jumpiness.

A couple more comments follow inline.

On Feb 9, 2006, at 7:01 PM, Neil Hodgson wrote:

Jason Haslam:

I had thought that it was more a case of diminishing returns.  My
assumption is that scrolling the widget is always faster than
rendering text.  If any part of the view can be copied then there is
something to be gained.  Does that oversimplify?

   I don't know as I haven't done enough measurements. One thing that
is slow is scrolling when there is another window clipping into the
scrolling area.

Hmm... I tried to do this just now but I couldn't get scroll focus with any part of the window obscured.


I imagine a case where 30 lines are visible on the screen.  If a
mouse wheel event generates a scroll of 20 lines then I would want
the pixel information for the remaining 10 lines to be copied and 20
lines to be rendered new.  It seems like a gain but there may be some
additional costs in getting up that machinery to do a widget scroll.

   I don't know if scrolling is always implemented inside the graphics
server or if it requires the live pixels to be sent back to the client
for redisplay. Current setups are probably well optimised but X is an
old system with many implementations.


Yes. I hadn't considered the implications on X windows. It certainly is something that I need to be worried about since we will be deploying this on platforms that use X.

Scroll performance wouldn't worry me too much, but I'm trying to put
two scintilla editors inside of a diff tool.  These kind of costs
start to add up when scrolling both views together.

   Then measure it. It should be fairly easy to tweak the lines
parameter inside Scintilla and see if it makes a difference. If there
is a reasonable speed-up on a current x.org server on a less than year
old PC then I'd include it. Robert can scream if it upsets his
minority platform.


I have tweaked it and can see no appreciable difference. That is, I can't feel any difference. I haven't done any formal analysis. I still might do some measurement if I have time, but it probably isn't worth the expenditure of effort anymore.

However, I do see a noticeable difference in small scrolls when the caret is visible after removing the call to ShowCaretAtCurrentPosition ().

Jason

_______________________________________________
Scintilla-interest mailing list
[email protected]
http://mailman.lyra.org/mailman/listinfo/scintilla-interest

Reply via email to