|basic question about cps email@example.com (2012-11-12)|
|Re: basic question about cps firstname.lastname@example.org (2012-11-14)|
|Re: basic question about cps email@example.com (Stefan Monnier) (2012-11-14)|
|Re: basic question about cps firstname.lastname@example.org (2012-11-21)|
|Date:||Wed, 21 Nov 2012 09:27:46 -0800 (PST)|
|Posted-Date:||21 Nov 2012 14:04:43 EST|
On Wednesday, November 14, 2012 4:13:52 PM UTC, Stefan Monnier wrote:
> > It seems to me that if one performs the cps transformation one is left
> > with many 'computed' calls (that is call to variables holding
> > procedure values, namely, the continuation).
> Yes. Every additional "computed call" (aka indirect call) corresponds
> to a "return" in the non-CPS version of the code.
> > It seems that compiling such 'computed' calls would be much slower
> > than compiling 'direct' calls to known procedures.
> That's the wrong comparison: the non-CPS version wouldn't see direct
> calls there, but would see `return's instead.
> Also, you're talking about "compiling" being "slower": are you really
> concerned about the speed of compilation, or the speed of the
> generated code?
> The performance of "return" versus "indirect call" depends on many
> factors, but it's probably important to try and make sure that the
> "return-like indirect calls" are compiled to code which the CPU
> recognizes as "some sort of return", in order for the
> branch-prediction to work better (CPUs keep an internal&hidden stack
> to try and predict the destination of return instructions).
Thanks very much for all your replies!
Return to the
Search the comp.compilers archives again.