On 08/03/2013 14:08, Juha Manninen wrote:
On Fri, Mar 8, 2013 at 3:43 PM, Vincent Snijders
<[email protected]> wrote:
Method number 1. is about 40 times faster!
I expected method number 2. to be the fastest.
Why? There is lot of comminucation between the LCL and widgetset, even
if the widgetset doesn't paint any update with method 2.
Well, I would consider this as a bug. A 40 times difference is big!
I have used BeginUpdate / EndUpdate often and they usually help to
obtain a fast GUI. I didn't make exact timings though.
Now, is this a well known issue and the right way is to always assign
data from a temp list?


I don't know in case of a TMEmo, but I guess there will be similar reasons. Consider that with a SynEdit.

If you insert/add lines to a SynEdit (inside BeginUpdate), there is still work it needs to do. Like it you insert before the caret, then the caret must still move. It will not be painted, but it must move. If wait and try to do that after EndUpdate you may get a different position.

Examble: caret is one before end of  line, and caret is not allowed past EOL
BeginUpdate
  abcdef|g
delete some chars at begin of line (caret moves
  f|g
insert at EOL
  f|g123456
EndUpdate

But if you did not move during BeginUpdate he caret then it would end up on a diff position.
Actually accessing SynEdit.Lines will skip that, But thats another story....

Point is the widget may have reasonable work to do, even if Updating

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to