CLIM mail archive
Incremental Redisplay Performance
Date: Tue, 3 Mar 1992 13:07 EST
From: will taylor <taylor@CHARON.arc.nasa.gov>
Date: Tue, 3 Mar 1992 08:33 PST
From: Scott McKay <SWM@SAPSUCKER.SCRC.Symbolics.COM>
Date: Mon, 2 Mar 1992 21:33 EST
From: will taylor <firstname.lastname@example.org>
A typical redisplay using this technique takes less than a second, while the default
redisplay took about 8 seconds (for a 50 node graph).
This experience reinforces my hope that CLIM 2.0's implementation and documentation
will place more emphasis on incremental redisplay performance -- with the default
redisplay functionality my UI was just about unusable. With my modificaitons the
UI demonstrates the advertised claims of CLIM.
***New message. I made a mistake in the code I supplied. Sorry.***
This reply is just meant to provide a few more bits of information.
Please don't think that I am in any way trying to defend the terrible
performance of CLIM's incremental redisplay.
Here is a kludgy patch that implements it. I have not tested this in
CLIM 1.0, just in CLIM 1.1. Use :INCREMENTAL-REDISPLAY '(T :CHECK-OVERLAPPING NIL)
in your pane.
Thanks for your detailed response -- I hope that it will be typical of the future
documentation of CLIM's incremental redisplay.
Will CLIM 1.1 correct the extreme slowness of changing layouts in CLIM 1.0? I went
to my own redisplay in that case as well, by creating multiple windows using
You'll have to characterize this better. The layout changing in
applications I have seen (or written) is quite speedy, at least on
Genera, because "bit save" arrays are used.
(defmethod MAKE-OVERLAY-WINDOW-STREAM ((frame APPLICATION-FRAME) &key pane-to-overlay
default-text-style window-class (scroll-bars :both)
"return window stream located over pane-to-overlay -- not in frame layout"
(let* ((parent (frame-top-level-window frame))
(input-buffer (stream-input-buffer parent)))
(multiple-value-bind (left top right bottom)
(open-window-stream :parent parent
:left left :top top :right right :bottom bottom
which occupy the same frame coordinates and then using (window-expose pane) to
expose the pane which belonged to the currently selected layout. Apparently there is
a (REDISPLAY-FRAME-PANE frame pane :force-p t) done on each pane on a newly selected
layout whether or not the pane is common to the previous layout and whether or not
the pane has changed.
Hmm, I wonder if the speedups are later than pure CLIM 1.0. In the
CLIM's I use (admittedly more recent than yours :-), the forced
redisplay is not done on panes that are known to be "initialized".
When is CLIM 1.1 to be expected?
It varies from vendor to vendor, but all of Lucid, Franz, and Symbolics
are presently doing QA on their CLIM 1.1 releases (although I think
Lucid is calling it CLIM 1.0).
==> Will Taylor
Main Index |