David Fox | 1 Sep 2003 19:24
Favicon

Re: Tuning the GC for lots of ephemeral objects


   Greetings. We'd like to use a particular Lisp library with our app that
   offers some nice connectivity between Lisp and Java. However, after
   conducting some performance measurements it appears to me that this library
   generates a large amount of ephemeral objects; the result is, after a bit of
   run time our app begins to slow down siginificantly, apparently due to
   garbage collection. I'm fairly confident in this analysis because we're
   simply supplying the app with the same small data set over and over, from a
   Java client. Initially, the Lisp app moves along nicely. Then, as mentioned
   it begins to slow down. The same data set provided via a different input
   interface, but still from a Java client, does not exhibit this behavior and
   the image size grows substantially more slowly.

   Assuming the library isn't leaking, is it possible to tune the LW GC for
   very large amounts of ephemeral (generation 0) objects? If so, how best
   would I go about it? Thanks much...

Start collecting data. This should always be the first step when
addressing any GC-related problem.

Use periodic calls to (ROOM) and less frequently call (ROOM T), and
wrap EXTENDED-TIME around code that appears to trigger the GC.  Mail
us the output, with a standard bug form, to lisp-support <at> xanalys.com.

One of my colleagues suggested as a first guess that you should be
looking at using BLOCK-PROMOTION and (MARK-AND-SWEEP 2), but without
data we cannot really give useful advice.

Sorry for the lateness of this reply - just back from vacation.

(Continue reading)

Dmitri Ivanov | 2 Sep 2003 12:12
Picon

gp:invalidate-rectangle only inside capi:execute-with-interface?

Hello lispworkers,

Chapter 6 "Modifying CAPI Windows" in CAPI User Guide (version 4.3) says:

    "... an on-screen interface must be altered only in its own process."

According to my understanding, gp:invalidate-rectangle must have been
implemented by posting a message into the event queue of the appropriate
procces. Is my guess correct and can gp:invalidate-rectangle be invoked
outside capi:execute-with-interface?
--
Sincerely,
Dmitri Ivanov
www.ystok.ru

________________________________________________________________________
This email has been scanned for all viruses by the MessageLabs Email
Security System. For more information on a proactive email security
service working around the clock, around the globe, visit
http://www.messagelabs.com
________________________________________________________________________

Nick Levine | 2 Sep 2003 13:36
Favicon
Gravatar

Re: gp:invalidate-rectangle only inside capi:execute-with-interface?

Dmitri,

       "... an on-screen interface must be altered only in its own
       process."

   According to my understanding, gp:invalidate-rectangle must have
   been implemented by posting a message into the event queue of the
   appropriate procces. Is my guess correct and can
   gp:invalidate-rectangle be invoked outside
   capi:execute-with-interface?

You should avoid writing code which depends on current implementation
details, as these might legitimately change without either warning or
documentation. 

Try to make a habit of using execute-with-interface whenever you do
anything to change a capi interface.

- nick

________________________________________________________________________
This email has been scanned for all viruses by the MessageLabs Email
Security System. For more information on a proactive email security
service working around the clock, around the globe, visit
http://www.messagelabs.com
________________________________________________________________________

Dmitri Ivanov | 4 Sep 2003 14:38
Picon

Re: gp:invalidate-rectangle only inside capi:execute-with-interface?

Hello Nick,

| You should avoid writing code which depends on current implementation
| details, as these might legitimately change without either warning or
| documentation. 
| 
| Try to make a habit of using execute-with-interface whenever you do
| anything to change a capi interface.

I follow your advice. Thanks.
--
Sincerely,
Dmitri Ivanov
www.ystok.ru

________________________________________________________________________
This email has been scanned for all viruses by the MessageLabs Email
Security System. For more information on a proactive email security
service working around the clock, around the globe, visit
http://www.messagelabs.com
________________________________________________________________________

Dmitri Ivanov | 8 Sep 2003 11:38
Picon

Q: Low-level make-float or encode-float in LW?

Hello Lispworkers,

Does any function inversing the effect of decode-float exist in LW? Wanted
to create a (boxed) float from significand, exponent, sign, precision, and
the like.
--
Sincerely,
Dmitri Ivanov
www.ystok.ru

________________________________________________________________________
This email has been scanned for all viruses by the MessageLabs Email
Security System. For more information on a proactive email security
service working around the clock, around the globe, visit
http://www.messagelabs.com
________________________________________________________________________

Nick Levine | 8 Sep 2003 12:15
Favicon
Gravatar

Re: Q: Low-level make-float or encode-float in LW?

There isn't an exposed primitive for this (afaik). LW array floats are
IEEE (32 or 64 bit), which you can look up. I guess you could write
some C to mangle the array.  Or burn a support call to have Xanalys do
it for you.

- nick

________________________________________________________________________
This email has been scanned for all viruses by the MessageLabs Email
Security System. For more information on a proactive email security
service working around the clock, around the globe, visit
http://www.messagelabs.com
________________________________________________________________________

Dmitri Ivanov | 10 Sep 2003 11:09
Picon

Re: Q: Low-level make-float or encode-float in LW?

Hello Nick,

| There isn't an exposed primitive for this (afaik). LW array floats are
| IEEE (32 or 64 bit), which you can look up. I guess you could write
| some C to mangle the array.  Or burn a support call to have Xanalys do
| it for you.

Regrettable, thanks.
--
Sincerely,
Dmitri Ivanov
www.ystok.ru

________________________________________________________________________
This email has been scanned for all viruses by the MessageLabs Email
Security System. For more information on a proactive email security
service working around the clock, around the globe, visit
http://www.messagelabs.com
________________________________________________________________________

Paul Werkowski | 11 Sep 2003 22:22

clim:scroll-bar-pane

Here is a simple program to display a scroll-bar pane, but CLIM ends up
calling
cl:- with a nil first argument while trying to draw a "thumb". Does anyone
know
how to get this to work? Maybe there is some undocumented parameter to
make-pane
that is needed?

I'm using LWW 4.2.7

Paul

;;;;;;;
(require "clim")
(in-package :clim-user)

(define-application-frame test2 ()
  ()
  (:pointer-documentation nil)
  (:panes
   (p1 :application
       :width 100 :height 100
       :scroll-bars nil)
   (p2 (make-pane 'scroll-bar-pane
                 :orientation :vertical
                  :min-value 1
                  :value 5
                  :max-value 10))
   )
  (:layouts
(Continue reading)

David Fox | 12 Sep 2003 19:31
Favicon

Re: Q: Hardcopy CAPI pattern: several output-panes -> one page printer-port


   It is quite easy to print the contents of one output-pane on several pages -
   just look at the page-on-demand.lisp example. The converse task seems rather
   tough.
   Suppose I have an interface with the following two panes:
       - header-output-pane
       - body-output-pane

   Each of them can only draw itself starting from top-left corner.
   I'd like to hardcopy the interface and try to draw them on a
   single printer-port inside with-printer-job:

       (capi:with-print-job (printer-port :printer printer)
	 (multiple-value-bind (page-width page-height)
		(capi:get-page-area printer)
	    (draw-header header-output-pane printer-port ...)
	    (with-position-on-page (printer-port (0  ;??
		    (capi:simple-pane-visible-height header-output-pane)))
	       (draw-body body-output-pane printer-port ...))))

   But how can I position body-output-pane at an arbitrary place on the sheet?
   Is there any approach to the hypothetical with-position-on-page macro?

   AFAIK with-page-transform (x y width height) has nothing to do here. Setting
   x or y would help only if the pane itself could draw with a translation,
   which is not my case.

GP:WITH-GRAPHICS-TRANSFORM can be used to position the drawing on the
page:

(Continue reading)

Hans-Peter Wickern | 14 Sep 2003 08:38
Picon
Favicon

Lisworks 4.3 WIN release date?

When you notice the announcment here on 

http://www.lispworks.com/press_releases/press7.html (created on 09.12.2003 ? )

it will announce the release of 4.3 WIN on 14.August.2003

I think I missed it last month! :-)

Or should it read 14.September?

Hans-Peter

________________________________________________________________________
This email has been scanned for all viruses by the MessageLabs Email
Security System. For more information on a proactive email security
service working around the clock, around the globe, visit
http://www.messagelabs.com
________________________________________________________________________


Gmane