[mcclim-devel] incremental redisplay optimization(?)
Duncan Rose
duncan at robotcat.demon.co.uk
Fri Jun 17 19:53:46 UTC 2005
On Friday, June 17, 2005, at 12:48 pm, Christophe Rhodes wrote:
> Hi,
>
> The new(ish) code for optimizing incremental redisplay by replaying
> move-overlapping and erase-overlapping records all at once is actually
> a huge pessimization for many disconnected records: I think that
> region-union is a precise operation, so the asymptotic complexity of
> the union operation is O(n^2), and I think the complexity of the
> replay is O(n^3). Specifically, for my tablature editor, an operation
> which causes most records to be redraw takes 200 seconds with the
> current code, with most time (about 77%) being spent in BANDS-OP.
>
> The attached fixes the performance problem by being a little less
> precise. Is it right?
>
Disclaimer: I'm not an incremental redisplay expert. Even less wrt the
McCLIM incremental redisplay code. So I should probably be quiet on
this ;-) However...
Won't this potentially cause large parts of the output to be redrawn
unnecessarily? For example:
+-------------------+
| A | <- output record gets changed
+-------------------+
| B |
+-------------------+
| C |
+-------------------+
| D |
+-------------------+
...
+-------------------+
| X | <- output record gets changed
+-------------------+
The bounding rect of the region union of output records A + X includes
the bounds of the output records B - W (so they'll be redrawn I think).
Obviously this is a worst-case type scenario; I don't know if it's
worth worrying about, just thought I'd throw it into the mixer.
-Duncan
> <ir.diff>
> Cheers,
>
> Christophe
> _______________________________________________
> mcclim-devel mailing list
> mcclim-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/mcclim-devel
More information about the mcclim-devel
mailing list