Related articles |
---|
basic question about cps n.oje.bar@gmail.com (2012-11-12) |
Re: basic question about cps torbenm@diku.dk (2012-11-14) |
Re: basic question about cps monnier@iro.umontreal.ca (Stefan Monnier) (2012-11-14) |
Re: basic question about cps n.oje.bar@gmail.com (2012-11-21) |
From: | n.oje.bar@gmail.com |
Newsgroups: | comp.compilers |
Date: | Wed, 21 Nov 2012 09:27:46 -0800 (PST) |
Organization: | Compilers Central |
References: | 12-11-004 12-11-010 |
Keywords: | analysis, administrivia |
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!
Best regards,
Nicolas
Return to the
comp.compilers page.
Search the
comp.compilers archives again.