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] |
hjstein@bfr.co.il (Harvey J. Stein) writes: > > > 4. I wrote a tetris game for STk. It has a non generational > > > conservative GC. The pauses are unnoticable because I increased > > > the heap allocation at the beginning & call gc at times when it > > > won't be noticable to the user. > > > > Well, what can I say. I have a GUI for my simulator written in Guile > > and it doesn't feel nice to interact with due to the irregular short > > pauses. But then I didn't change heap allocation or call gc. > > How are you doing the GUI? Using the guile interface to GTk? I use gtcltk. This means that there is a lot of scheme code executed, which makes it a good test case. > Is it basically an animation sort of issue - you want things to move > smoothly around the screen & gc interrupts it? No, not in that case. It's a toolbar and a canvas where you can place objects and connect them to eachother (MacDraw:ish). > It relieves the user from memory management, This is what I meant. > How can a few (gc) calls in the code have a bad influence on program > structure? I think that's overblown. It all depends on where you need to do them in order to avoid the all-generation scans, doesn't it? If you write a tetris game, placing the gc call directly after generation of a new piece doesn't destroy code structure. But where, for example, should you put the gc call in a GUI where the flow of control is guided by the user's actions? Should I then put it at the top of every call-back? No, that would be too heavy since certain types of callbacks are invoked too often (like when dragging an object in the canvas). It's probably only certain call-backs which need it, and then, maybe some of them need it conditionally upon what the user does... etc etc. > > I haven't claimed that waiting for GC is a big deal in general. I > > claim that it is a big deal when you're writing GUI code in Scheme. > > I'd contend it's not GUI code, but animation. It seems like both Russ and I have GUI:s which don't do animations but which still have noticeable, irregular GC pauses. > > Agreed. I want a behaviour "smooth" enough not to have to worry about > > GC when writing GUI:s. > > The only way you'll get this is with a gc running in a separate thread. No. You can also get it in at least two more cases: 1. collecting cells incrementally, either cell by cell, or in small groups., 2. doing gengc but not collecting all heap blocks during one gc pause. /mdj