[racket] TR memory optimization: 240 Bytes of garbage for calling TR?

From: Sam Tobin-Hochstadt (samth at ccs.neu.edu)
Date: Sun Nov 11 13:36:03 EST 2012

On Sat, Nov 10, 2012 at 11:07 PM, John Clements
<clements at brinckerhoff.org> wrote:
>
> On Nov 10, 2012, at 7:29 AM, Robby Findler wrote:
>
>> If you're calling from Racket to TR then you have the contract
>> checking and probably the floats flowing thru there need boxing.
>
> If I understand you correctly, the contract checking would just be "is this a float?" which I imagine wouldn't require additional memory. Certainly the return value would have to be boxed, and that would definitely be eight bytes, I'm guessing.

There's also the allocation overhead involved in wrapping the
function, plus probably lots of other places where unboxing is
inhibited.

>>
>> Can you put the loop itself into TR?
>
> Sadly, no; the loops themselves are written by students. Or, more specifically, written by students as  a "network" form that expands into a function that's called in a loop. I think that expanding into TR would be incredibly hard to get right.

I'm not sure why this would be.  Is the code students write unrestricted?

--
sam th
samth at ccs.neu.edu

Posted on the users mailing list.