[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Extra systems in world load



   From: rshu@ads.com (Richard Shu)
   Date: 1 Nov 89 01:32:14 GMT

   I can think of a couple of cases where doing this would increase
   response time for a developer.  These are:

   1) Doing package DWIM
   2) Doing List Callers

   In both these cases, the presence of a package with many symbols
   will probably cause a significantly longer response time.  I don't
   know a lot about how symbols are implemented but I assume there
   is a separate hash-table for each package and that the above
   functionalities involve paging the hash-table for each package.

You are correct about package DWIM, but I think the effect would be minor.
Looking up a symbol in a package generally only requires about two page
faults: one for the hash table header, and another for the page containing
the array element indexed by the hash function.  My Lispm currently has
about 100 packages, so every additional package would slow down package
DWIM by a percent, which isn't significant in my book.

I don't think it should slow down List Callers at all.  Ever since Genera
7.0, List Callers has worked by using a table keyed off the symbol or
function name.  The only time the extra systems would slow things down is
when the who-calls database is being built from scratch, which would
probably be before saving the band.

   BTW, I've wondered for several years if one could effectively "unload"
   software by doing a remob on all the symbols in a package.
   If the number of symbols is large and many of them are functions,
   would there be a significant recovery of free space?

In fact, all you really need to do is SI:PKG-KILL the package.

The problem with this, however, is that functions are normally allocated in
a static area, so they'll get saved even though they aren't referenced.
Maybe Optimize World cleans this up.