This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: gc notes available


Greg Harvey <Greg.Harvey@thezone.net> writes:

> Mikael Djurfeldt <mdj@nada.kth.se> writes:
> 
> > Should I really need to do all dynamic GUI stuff in C code?
> 
> Definately not. But, is it going to be generating that much garbage
> that the gc will be invoked so many times as to slow the thing down
> noticably?>
> [...]
> This is a desire for very short, unnoticable pauses, and that's the
> goal anyway.

If I can't notice the GC pauses in the behaviour of the GUI, then
*I'm* happy (although I can imagine that better-than-human realtime
performance could be wished by other types of applications).

But I have one additional wish (I haven't yet had time to read your
text, so I don't know if you address this problem): When Guile
switches to real threading (POSIX threads) we'll have to stop all
threads, using mutices, before GC with the current collector.  

> > May I ask: How important is *performance* in a scripting language?
> 
> Important, but not the most vital bit in most uses. The main benefit
> to a scripting language is the programming time it saves.
> [...]

Exactly.  This is what I meant when I wrote the question.  (But it
seems to me that both you and thi interpreted it differently.  The
last lines of my letter was supposed to mean: Slowing down Guile a
little may be worth the cost if it makes Guile useful for new classes
of tasks, like those dependent upon realtime performance.)

> It doesn't matter to me whether it takes 5 ms or 5 seconds to start
> up

(This is really a different issue than the one we discuss above.)
I don't agree.  While performance may not be the most important thing
in a scripting language it is extremely important that it doesn't take
5 s to start up.  I want to write Guile scripts to use as tools
from the command line.  That kind of scripts has do startup swiftly.
I would get crazy if commands like `ls' and `cd' took 5 s to start.

Many of my bourne shell scripts are tools on the same level.  An
example of the kind of scripts I'm referring to is a "module" command
which I've written in Guile.  I use it to switch between different
versions of packages by altering environment variables like PATH,
LD_LIBRARY_PATH etc.

But I don't think we have to worry much longer about start up time in
Guile.  Gary is rewriting I/O---that will be a big boost.  Eventually,
when we get the new module system and have had time to do a bit of
restructuring, startup time will be acceptable.

/mdj