[mcclim-devel] performance of incremental redisplay

Timothy Moore moore at bricoworks.com
Tue Jan 2 08:41:03 UTC 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Robert Strandh wrote:
> The slowness of my example from the other day seems to be caused by
> the fact that each top-level output record (of which there are 1000 in
> my example) is moved individually, and moving an output record
> triggers a call to recompute-extent-for-changed-child.  The parent
> then scans all the children to compute the new bounding rectangle,
> resulting in quadratic behavior.
> 
> The solution to this problem seems to be to realize that incremental
> redisplay must traverse all the output records anyway (to see what has
> changed), and so it would be a better idea to put off the computation
> of the bounding rectangle until the end of this entire process. 
> 
> I maintain my previous analysis that it would be a better idea to
> store relative positions in output records, so that moving an output
> record does not require traversing its children. 

It's interesting to note that early versions of CLIM did store the child
positions as relative coordinates; it was considered an important
optimization to move to fixed coordinates! :) I believe that relative
coordinates were identified as a bottleneck in the comparison part of
updating-output.

Trade-offs that were important 20 years ago may not be relevant today...

Tim

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD8DBQFFmhqeeDhWHdXrDRURAu1TAJwIycuUZcSGOmzf6fn/TEtfSqSuZwCgiIUS
eylxeKojeo3bIph3ZU6GXeY=
=2drZ
-----END PGP SIGNATURE-----



More information about the mcclim-devel mailing list