[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-users] multiple values in chicken
From: |
Will Farr |
Subject: |
Re: [Chicken-users] multiple values in chicken |
Date: |
Fri, 1 Feb 2008 13:55:00 -0500 |
Hi Kon,
Thanks for running the tests---that was quick! It's true that, as written,
(define (values . rest) (call/cc (lambda (k) (apply k rest))))
would be expensive. You must create a closure, cons up a rest list,
and I bet that apply uses some C varargs magic that probably is much
slower than a straight function call. But, how hard would it be to
specify a re-write rule which takes effect after CPS conversion which
transforms
(##sys#values k v1 ...)
into
(k v1 ...)
That would solve all these problems in the typical case of explicit
values usage (i.e. the first-order case), though values would still be
slow if used in a higher-order fashion as the identity function. I
can't decipher enough of the re-write rules in c-platform.scm to add
such a thing myself, though I suspect that it's about 10 minutes work
for somebody who knows what's going on with all these re-write
classes.
Will
On Feb 1, 2008 1:22 PM, Kon Lovett <address@hidden> wrote:
> ---- VALUES --------------------------------------------------
> 32.571 seconds elapsed
> 1.724 seconds in (major) GC
> 0 mutations
> 3304 minor GCs
> 1103 major GCs
> ---- LIST ----------------------------------------------------
> 8.244 seconds elapsed
> 0.009 seconds in (major) GC
> 0 mutations
> 2457 minor GCs
> 7 major GCs
> ---- CC-VALUES --------------------------------------------------
> 42.69 seconds elapsed
> 1.735 seconds in (major) GC
> 0 mutations
> 1824 minor GCs
> 1104 major GCs
>
- Re: [Chicken-users] multiple values in chicken, (continued)
- Re: [Chicken-users] multiple values in chicken, felix winkelmann, 2008/02/04
- Re: [Chicken-users] multiple values in chicken, John Cowan, 2008/02/04
- Re: [Chicken-users] multiple values in chicken, felix winkelmann, 2008/02/04
- Re: [Chicken-users] multiple values in chicken, John Cowan, 2008/02/04
- Re: [Chicken-users] multiple values in chicken, Graham Fawcett, 2008/02/04