[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-users] News from the Barnyard
From: |
Felix Winkelmann |
Subject: |
Re: [Chicken-users] News from the Barnyard |
Date: |
Fri, 13 Jun 2003 12:06:33 +0200 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.0) Gecko/20020530 |
Joerg F. Wittenberger wrote:
Anyway: rscheme uses (to my understanding) a register file (vector of
values) for parameters. If I keep calling functions, which all have
the same signature and only modify a few of the parameters, the
rscheme compiler seems to feed mostly /* NOOP */ to C (except for the
modified parameters) - hardly beatable in runtime. Chicken seems to
fill yet another stack frame. Am I right?
Yes, right. Peter Keller had an interesting idea about "re-using" stack
frames (or better: using statically allocated ones), but this seems
to break the garbage collector... We have to look more into that.
Keep in mind: that's a wild guess. There is also the fact that the
Scheme interpreter in rscheme apparently compiles into byte code,
which the one in Askemos does not. I have no idea, which one would be
faster. (Bytecompile effort doesn't really count, the Askemos caches
quite a few things, also calls to 'eval'.)
Yes, Chicken uses a "closure tree" for interpretation (as in that
paper by Feeley et. al) which is extremely elegant and quite simple
to implement. But a byte-compiler is still much faster, though.
Unfortunately, it's rather tricky to use normal direct-style
byte-compilation in a CPS environment (like Chicken's compiled
code representation) (I tried).
cheers,
felix